Я пытаюсь использовать [Authorize (Roles = "test")] и/или вызывать User.IsInRole ("test") в тестовом приложении, и он не работает для меня. В конфигурации приложения на портале управления Azure я включил заявку SecurityGroup в манифест приложения, а также установил делегированные разрешения, чтобы разрешить «Читать все группы» и «Читать данные каталога». После этого я могу увидеть SID для тестовой группы в (ClaimsPrincipal.Current.Identity as ClaimsIdentity) .FindAll («groups»), но атрибут Authorize и вызов IsInRole не работают. Что-то еще необходимо, чтобы это работало?Использование атрибута Authorize с Azure Active Directory
ответ
Azure AD не отправляет группы в заявку на роль, и он не отправляет имя групп (в многопользовательской системе это не означает много: «admin» в contoso может иметь совершенно другую семантику от «admin» «в фабрикамах». Azure AD имеет новую конструкцию, которая представляет фактические роли, в отличие от группы. Если вы хотите проверить доступ к имени роли , см. https://github.com/Azure-Samples/active-directory-dotnet-webapp-roleclaims/blob/master/WebApp-RoleClaims-DotNet для примера с использованием ролей приложения. Если вы хотите проверить авторизацию вместо группы, вам нужно назначить тип заявки группы как RoleClaimType (в https://github.com/Azure-Samples/active-directory-dotnet-webapp-roleclaims/blob/master/WebApp-RoleClaims-DotNet/App_Start/Startup.Auth.cs вы можете увидеть, как это делается для ролей приложения), чтобы ASP.NET знал, что это требование, чтобы подтвердить, когда авторизация и IsInRole вступает в игру. Кроме того, учитывая, что вы не получили имя группы, вам необходимо выполнить проверку против объекта objectId. Если вы хотите использовать группы и проверять имена групп, это становится сложным. Вам нужно вызвать API-интерфейс графика, чтобы перевести ObjectId группы в его имя и соответственно увеличить входящую коллекцию заявок.
В ASP.NET 5 и MVC 6 все, что вам нужно сделать, это правильная настройка. Вот код, который работает как очарование для меня:
public void ConfigureApplication(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.UseIISPlatformHandler();
app.UseStaticFiles();
app.UseCookieAuthentication(options =>
{
options.AutomaticAuthenticate = true;
});
app.UseOpenIdConnectAuthentication(options =>
{
options.AutomaticChallenge = true;
options.ClientId = Configuration.Get<string>("Authentication:AzureAd:ClientId");
options.Authority = Configuration.Get<string>("Authentication:AzureAd:AADInstance") + "Common";
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
RoleClaimType = "roles"
};
options.Events = new OpenIdConnectEvents
{
OnAuthenticationValidated = (context) => Task.FromResult(0),
OnAuthenticationFailed = (context) =>
{
context.Response.Redirect("/Home/Error");
context.HandleResponse(); // Suppress the exception
return Task.FromResult(0);
},
OnRemoteError = (context) => Task.FromResult(0)
};
});
app.UseMvc(routes =>
{
routes.MapRoute(name: "default", template: "{controller=Dashboard}/{action=Index}/{id?}");
});
DatabaseInitializer.InitializaDatabaseAsync(app.ApplicationServices).Wait();
}
- 1. Использование Azure Active Directory B2C с NativeScript
- 2. Использование Active Directory с Microsoft Azure
- 3. Частичная аутентификация с помощью Azure Active Directory
- 4. Apache SVN Authorize для группы Active Directory
- 5. Azure Active Directory SSO
- 6. Azure Active Directory авторизация
- 7. Конфигурация Azure Active Directory
- 8. azure active directory & postman
- 9. Azure active directory
- 10. Azure Active Directory Login
- 11. azure Active Directory Войти
- 12. Переименование Azure Active Directory
- 13. Удалить Azure Active Directory
- 14. Синхронизация с Azure Active Directory
- 15. ActiveDirectoryMembershipProvider с Azure Active Directory
- 16. Синхронизация с Azure Active Directory
- 17. Azure Active Directory B2C
- 18. Azure Active Directory Domains
- 19. Использование Azure Active Directory в Azure Web App с Meteor
- 20. Код авторизации Active Directory Azure
- 21. Аутентификации WebAPI с Azure Active Directory
- 22. Пользовательский SSO с Azure Active Directory
- 23. Одиночный вход с Azure Active Directory
- 24. Роли Active Directory для Azure
- 25. Azure Onpremise Active Directory SSO
- 26. Azure Active Directory Ошибка входа
- 27. Azure Active Directory Forms Authentication
- 28. Azure Active Directory - присвоить группе
- 29. Azure Active Directory и WCF
- 30. Azure Active Directory Строка соединения