Библиотека аутентификации Microsoft - получить членство в группе - PullRequest
0 голосов
/ 02 октября 2019

Теперь мы используем MSAL в нашем приложении Xamarin / C # для аутентификации пользователей , следующим шагом является определение того, является ли аутентифицированный пользователь членом определенных групп в организации, которые разрешают доступ к определенным функциямприложение.

Я получил код из StackOverflow для , запрашивая членство , он выдает исключение "Authorization_RequestDenied: недостаточно прав для завершения операции", но я попросил ИТ добавить добавитьсвойство "groupMembershipClaims" для манифеста Azure mCP, и я надеюсь, что это все исправит.

Вот некоторые основные моменты текущего кода:

var interactiveRequest = App.PCA.AcquireTokenInteractive(scopes);
var authResult = await interactiveRequest.ExecuteAsync();
var graphClient = new GraphServiceClient(
   new DelegateAuthenticationProvider(
      (requestMessage) =>
      {
         // Configure the HTTP bearer Authorization Header
         requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", authResult.AccessToken);
         return (Task.FromResult(0));
      }
      ));
   var groups = await graphClient.Me.MemberOf.Request().GetAsync();

Я предполагаю, что яможет заставить это работать, но сейчас я читаю здесь о различиях между Microsoft Graph API и Microsoft AD Graph API, и я не знаю, является ли найденный код «правильным» кодом для использованияздесь, или есть ли более простой / лучший код, который я должен использовать. Является ли код, который у меня есть, для определения членства в группе рекомендуемым вариантом?

EDIT

IT устанавливает для "groupMembershipClaims" значение "SecurityGroup", и это дает то же исключение, поэтомуочевидно, запросить членство - это не то же самое, что заявить о членстве. Но в моем случае есть одна группа (роль?) С надписью «этому пользователю разрешено запускать приложение» и другая группа / роль с надписью «у этого пользователя есть доступ к специальным функциям», поэтому я не хочу запрос на аутентификациюпросто потерпеть неудачу, если пользователь не является членом этой второй группы / роли.

1 Ответ

1 голос
/ 03 октября 2019

Если вы хотите узнать группы, к которым принадлежит пользователь, вы можете проанализировать id_token. У id_token есть одно утверждение "groups", оно сообщит вам идентификатор группы, к которой принадлежит пользователь. Например,

  1. Настройка манифеста приложения

Пожалуйста, обновите значение groupMembershipClaims как All. enter image description here

получить Id токен
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e        // Your registered Application ID
&response_type=id_token%20code
&redirect_uri=      // Your registered redirect URI, URL encoded
&response_mode=form_post                             // 'form_post' or 'fragment'
&scope=openid%20                                      // Include both 'openid' and scopes that your app needs  
offline_access%20                                         
https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
&state=12345                                          // Any value, provided by your app
&nonce=678910                                         // Any value, provided by your app
токен Alayse id vai jwt.io enter image description here
...