Как: Группы пользователей ADB2C в токене - PullRequest
0 голосов
/ 08 апреля 2019

Я работаю с клиентом ADB2C и хотел бы узнать, как настроить и извлечь группы пользователей в токене авторизации в потоке аутентификации ADB2C.

Я могу настроить и получить пользовательский атрибут в своем токене, но не могу настроить утверждение группы, которое потенциально может перечислить членство пользователя в определенной группе (группах).

ожидаемая группа: {}

1 Ответ

0 голосов
/ 09 апреля 2019

В B2C нет групповых заявок, которые будут возвращаться в токене, поэтому вы не можете следовать тем же путем в Azure AD.

Можно попытаться разрешить приложению вручную извлекать эти утверждения, заявленные группой, и вставить их в токен.

Для этого вы можете обратиться к методу в Azure AD:

var authority = $"https://login.microsoftonline.com/{Tenant}";
var graphCca = new ConfidentialClientApplication(GraphClientId, authority, GraphRedirectUri, new ClientCredential(GraphClientSecret), userTokenCache, null);
string[] scopes = new string[] { "https://graph.microsoft.com/.default" };

try
{
    AuthenticationResult authenticationResult = await graphCca.AcquireTokenForClientAsync(scopes);
    string token = authenticationResult.AccessToken;

    using (var client = new HttpClient())
    {
        string requestUrl = $"https://graph.microsoft.com/v1.0/users/{signedInUserID}/memberOf?$select=displayName";

        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);

        HttpResponseMessage response = await client.SendAsync(request);
        var responseString = await response.Content.ReadAsStringAsync();

        var json = JObject.Parse(responseString);

        foreach (var group in json["value"])
            notification.AuthenticationTicket.Identity.AddClaim(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Role, group["displayName"].ToString(), System.Security.Claims.ClaimValueTypes.String, "Graph"));

        //TODO: Handle paging. 
        // https://developer.microsoft.com/en-us/graph/docs/concepts/paging
        // If the user is a member of more than 100 groups, 
        // you'll need to retrieve the next page of results.
    }
} catch (Exception ex)
{
    //TODO: Handle
    throw;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...