LoginAsync с использованием токена доступа и MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory - PullRequest
0 голосов
/ 21 октября 2018

Я получаю сообщение «У вас нет прав для просмотра этого каталога или страницы».ошибка при попытке LoginAsync с токеном доступа и MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory.Это работает с эквивалентной формой с MobileServiceAuthenticationProvider.MicrosoftAccount.Я не уверен, почему это не работает.Мне не хватает конфигурации?

var msaProvider = await WebAuthenticationCoreManager.FindAccountProviderAsync(
"https://login.microsoft.com",
"https://login.microsoftonline.com/3dd13bb9-5d0d-dd2e-9d1e-7a966131bf85");
string clientId = "6d15468d-9dbe-4270-8d06-a540dab3252f";
WebTokenRequest request1 = new WebTokenRequest(msaProvider, "User.Read", clientId);
request1.Properties.Add("resource", "https://graph.microsoft.com");
WebTokenRequestResult result =
await WebAuthenticationCoreManager.RequestTokenAsync(request1);
    if (result.ResponseStatus == WebTokenRequestStatus.Success)
    {
        var token = result.ResponseData[0].Token;
        var token1 = new JObject
                {
                    { "access_token", token }
                };
        var user = await App.mobileServiceClient.LoginAsync(
            MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, token1);

1 Ответ

0 голосов
/ 05 ноября 2018

Мне удалось заставить MSAL.NET работать для этого согласно приведенному ниже коду.Ключом является область действия { resourceId + "/user_impersonation" }.

PublicClientApplication pca = new PublicClientApplication(clientId)
                    {
                        RedirectUri = redirectUri
                    };
                    string[] scopes = { resourceId + "/user_impersonation" };
                    var users = await pca.GetAccountsAsync();
                    var user = users.FirstOrDefault();
                    AuthenticationResult msalar = await pca.AcquireTokenAsync(
                        scopes, user, UIBehavior.ForceLogin, "domain_hint=test.net");
                         payload = new JObject
                         {
                             ["access_token"] = msalar.AccessToken
                         };
 mobileServiceClient.LoginAsync(MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, payload);

Ссылка: https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/660#issuecomment-433831737

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