ОК я боролся с этим некоторое время, и я понял это, я верю.
Во-первых, В Azure AD настройте приложение WebApi как тип приложения, чтобы быть веб-приложением/API. перейти к манифесту файла и добавить свои роли как
[
{
"allowedMemberTypes": [
"User"
],
"displayName": "Reviewer",
"id": "0238c2bb-9857-4d07-b760-a47ec621d57a",
"isEnabled": true,
"description": "Reviewer only have the ability to view tasks and their statuses.",
"value": "reviewer"
},
{
"allowedMemberTypes": [
"User"
],
"displayName": "Approver",
"id": "000018cb-19e3-4f89-bf99-5d7acf30773b",
"isEnabled": true,
"description": "Approvers have the ability to change the status of tasks.",
"value": "approver"
}
]
Затем создайте клиентское приложение, как тип приложения, чтобы быть родным приложение и добавить необходимые права доступа к услуге вы добавили выше.
В угловом приложение SPA добавить что-то вроде этого
var endPoints = {
// "https://localhost:44386/" is the API URL
// "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" is the Service Application ID
"https://localhost:44386/": "xxxxxxxxxxxxxxxxxxxxxxxxxx"
};
adalAuthenticationServiceProvider.init({
instance: "https://login.microsoftonline.com/",
// tenant is your tenant name (something like below)
tenant: "{NAME}.onmicrosoft.com",
// this is the Native app application ID (ClientID) you registered
clientId: "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
extraQueryParameter: "nux=1",
endpoints: endPoints
}, $httpProvider);
}
]);
Тогда в вашем startup.cs вам необходимо настроить службу App как следующее:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
TokenValidationParameters = new TokenValidationParameters
{
/* "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" is the Service Application ID. (Same as you registered in the client app above)*/
ValidAudience = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
RoleClaimType = "roles"
},
/*enant is your tenant name (same as you registered in client app above)*/
Tenant = "{NAME}.onmicrosoft.com"
});
Наконец, вам нужно перейти на Лазурный активное приложение Каталога => Enterprise => всех приложений => выберите ваша служба webAPI => Пользователи и группы => затем назначают пользователей ролям.
Когда все это делается при входе в систему через клиентское приложение для проверки подлинности и вызвать WebAPI, adal.js и ADA-angular.js поставит соответствующий маркер канала, которая содержит роли
То, что мы в основном хотят достигнуть, карты наших групп ролей и сделать авторизацию на основе ролей, не выходя за Azure Active Directory премии. В любом случае, мы можем получить токен с помощью ADAL.js, а затем вызвать Microsoft Graph API на стороне сервера и вставить группы в токен? – Pickle
Нет, это невозможно. Поскольку токен выдается/подписан с Azure AD. Мы не можем изменить токен для обеспечения безопасности. –