Я пробовал различные сценарии аутентификации Azure Active Directory через Интернет.Все примеры ориентированы только на Авторизацию Аутентификацией.Я искал Авторизацию пользователя на основе ролей из моих AAD App Registration
.
Auth() Scenarios
,
Например,
.. \Controller \ ArtistController.cs:
public class ArtistController : ApiController
{
[Authorize(Roles = "Admin, InternalAdmin")]
public void Post(ArtistModel model)
{
// Do admin stuff here...
}
}
.. \ App_Start \ Startup.Auth.cs [Не работает] :
public void ConfigureAuth(IAppBuilder app)
{
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
SaveSigninToken = true,
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
RoleClaimType = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role"
}
});
}
.. \ App_Start \Startup.Auth.cs [Рабочий] :
public void ConfigureAuth(IAppBuilder app)
{
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = ConfigHelper.ClientId,
Authority = ConfigHelper.Authority,
RedirectUri = "<<Home_Url>>",
PostLogoutRedirectUri = ConfigHelper.PostLogoutRedirectUri,
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
NameClaimType = "upn",
RoleClaimType = "roles", // The claim in the Jwt token where App roles are provided.
},
Notifications = new OpenIdConnectAuthenticationNotifications()
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect("/Error/ShowError?signIn=true&errorMessage=" + context.Exception.Message);
return System.Threading.Tasks.Task.FromResult(0);
}
}
});
}
Я понимаю, что OWIN
может подключить любой middleware
для обработки входящих http
запросов.Auth Middlewares
как OpenId
, WindowsBearerToken
, ...
Является ли UseOpenIdConnectAuthentication()
единственно правильным middleware
для авторизации веб-ресурсов по ролям свыше UseWindowsAzureActiveDirectoryBearerAuthentication()
на основе этого примера?
Пожалуйста, предложите.