Я пытаюсь интегрировать Azure AD для аутентификации с Piranha CMS.
На данный момент это моя конфигурация:
Запуск
public IServiceProvider ConfigureServices(IServiceCollection services) {
services.AddPiranhaImageSharp();
services.AddPiranhaEF(options => options.UseMySql(Configuration["ConnectionStrings:DefaultConnection"]));
services.AddPiranhaIdentityWithSeed<IdentityMySQLDb>(
options => options.UseMySql(Configuration["ConnectionStrings:DefaultConnection"]));
services.AddPiranhaManager();
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
}).AddOpenIdConnect(options =>
{
options.Authority = "https://login.microsoftonline.com/" + this.TenantId;
options.ClientId = this.ClientId;
options.ResponseType = OpenIdConnectResponseType.IdToken;
options.CallbackPath = "/signin-callback";
options.SignedOutRedirectUri = "https://localhost:5001/";
options.SaveTokens = true;
options.Events.OnTokenValidated = async context => { await TokenValidated(context); };
}).AddCookie();
}
При использовании вышеуказанной конфигурации мне удалось использовать Azure AD для аутентификации пользователей дляобщедоступный веб-сайт.
Когда я пытаюсь получить доступ к области manager , я не могу получить к ней доступ, используя стандартную комбинацию user / pass.Здесь мне понадобится небольшая помощь.
Позже Редактировать :
Чтобы заставить обоих работать, я внес следующие изменения:
services.AddAuthentication(/*specify no options, leave defaults*/)
.AddOpenIdConnect(options =>
{
options.Authority = "https://login.microsoftonline.com/" + this.TenantId;
options.ClientId = this.ClientId;
options.ResponseType = OpenIdConnectResponseType.IdToken;
options.CallbackPath = "/signin-callback";
options.RemoteSignOutPath = "/signout-oidc";
options.SignedOutRedirectUri = "https://localhost:5001/";
options.SignedOutCallbackPath = "/signout-callback";
options.SignOutScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.Events.OnTokenValidated = async context => { await TokenValidated(context); };
})
.AddCookie(options => options.Cookie.SameSite = SameSiteMode.None);
Затем, когда я пытаюсь войти / выйти из системы, я создал SecurityController следующим образом:
public class SecurityController : Controller
{
public IActionResult Login()
{
return Challenge(new AuthenticationProperties
{
RedirectUri = "/about"
}, OpenIdConnectDefaults.AuthenticationScheme);
}
public async Task<IActionResult> Logout()
{
await HttpContext.SignOutAsync("Identity.External");
return Redirect("/");
}
}