Наше приложение позволяет назначать разрешения для групп, что означает для каждого пользователя, мы должны надежно определить членство в группе. Пользователь представляет токен, регулярно полученный с помощью ADAL (некоторые используют .NET, другие используют NodeJS, другие используют CLI).
Некоторые пользователи, похоже, отправляют токен со следующим утверждением:
"hasgroups": true,
Это утверждение задокументировано в справке по токену Azure AD .
Мы хотели бы добавить тестовый пример для этого, но после следующих шагов здесь и здесь мы всегда получим токен со следующими утверждениями:
"_claim_names": {
"groups": "src1"
},
"_claim_sources": {
"src1": {
"endpoint": "https://graph.windows.net/{redacted}/users/{redacted}/getMemberObjects"
}
},
Что не так с нашей настройкой? Почему мы не можем получить hasgroups
претензию?
Вот дополнительная информация:
- Тип приложения Native (не WebApi).
- Манифест говорит
"oauth2AllowImplicitFlow": true
.
- Приложению предоставляется доступ к хранилищу ключей Azure.
Мы используем следующий код для получения токена (в C #):
var userCredential = new UserCredential( _userName, _password );
result = context.AcquireToken( _resource, _clientId, userCredential );
Где:
_userName
и _password
от пользователя с большим количеством групп.
_clientId
- идентификатор приложения собственного приложения - приложение с "oauth2AllowImplicitFlow": true
.
_resource
- это https://vault.azure.net
.
Токен выдан правильно. Единственная проблема заключается в том, что он показывает _claim_names
и _claims_sources
вместо hasgroups
.