В едином входе Azure AD B2B с мультитенантным приложением я получаю ответ «Недостаточно прав для выполнения операции». - PullRequest
0 голосов
/ 04 октября 2018

Я использовал следующие разрешения:

enter image description here

public void Test()
{
    try
    {


        string tenantId = User.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
        string authority = "https://login.microsoftonline.com/{0}/common/oauth2/v2.0/token?scope=openid%20profile%20User.ReadWrite%20User.ReadBasic.All%20Sites.ReadWrite.All%20Contacts.ReadWrite%20People.Read%20Notes.ReadWrite.All%20Tasks.ReadWrite%20Mail.ReadWrite%20Files.ReadWrite.All%20Calendars.ReadWrite";
        string graphResourceId = "https://graph.microsoft.com";

        string clientId = "XXX-XXX-XXX-XXX";
        string secret = "XXXXXXXXXXXXXXXXXXXXXXXX";
        authority = String.Format(authority, tenantId);
        AuthenticationContext authContext = new AuthenticationContext(authority);

        var accessToken = authContext.AcquireTokenAsync(graphResourceId, new ClientCredential(clientId, secret)).Result.AccessToken;
        var graphserviceClient = new GraphServiceClient(new DelegateAuthenticationProvider(requestMessage =>
           {
               requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
               return Task.FromResult(0);
           }));

        var _users = graphserviceClient.Users.Request().GetAsync().Result;

    }
    catch (Exception ex)
    {
        throw ex;
    }
}


public async Task<IActionResult> Index()
        {

            string tenantId = User.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
            string ClientID = "xxx-xxx-xxx-xxx";

            ActiveDirectoryClient adClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/" + tenantId), async () => await GetAppTokenAsync(tenantId).ConfigureAwait(true));

            try
            {
                var naaaewuser = adClient.Users.ExecuteAsync().Result;
            }
            catch (Exception ex)
            {

                throw ex;
            }
return View();
}

"код": "Authorization_RequestDenied"

"value": "Недостаточно прав для завершения операции."

Может кто-нибудь помочь мне, как я могу получить список пользователей организации, которая выполнила вход без «Согласие администратора»?Также, пожалуйста, дайте мне знать, если есть альтернатива для этого.

Спасибо

1 Ответ

0 голосов
/ 10 октября 2018

Я получил решение и получил базовый профиль пользователей моей организации.Решение. Получите токен доступа с помощью метода AcquireTokenSilentAsync.Подробнее

https://stackoverflow.com/a/52734558/4689622

Спасибо всем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...