Получение ошибки при запросе разрешений графа через Microsoft.Identity.Web

В своем приложении я получаю следующий стек ошибок, основанный на образце пользователя WebApp-graph. Я просто пытаюсь войти в систему и получить токен для прав доступа User.ReadBasic.All. Я проверил все параметры, входящие в AcquireTokenByAuthorizationCode, и все выглядело хорошо (без нулевых значений). Приложение представляет собой веб-приложение MVC, использующее.NET core 3.1.

стек:

NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта. Microsoft.Identity.Client.Internal.ClientCredentialWrapper.get_Thumbprint() Microsoft.Identity.Client.Internal.JsonWebToken+JWTHeaderWithCertificate..ctor(ClientCredentialWrapper credential, bool sendCertificate) Microsoft.Identity.SonEdentialWrapper credential (Bool sendCertificate) Microsoft. sendCertificate) Microsoft.Identity.Client.Internal.JsonWebToken.Encode(учетные данные ClientCredentialWrapper, bool sendCertificate) Microsoft.Identity.Client.Internal.JsonWebToken.Sign(ClientCredentialWrapper credential, bool sendCertificate.Redential.Internal. CreateClientCredentialBodyParameters (регистратор ICoreLogger, ICryptographyManager cryptographyManager, ClientCredentialWrapper clientCredential,string clientId, AuthorityEndpoints endpoints, bool sendX5C) Microsoft.Identity.Client.OAuth2.TokenClient.SendTokenRequestAsync(IDictionary additionalBodyParameters, string scopeOverride, string tokenEndpointOverride, CancellationToken cancellationToken, tokenEndpointOverride, CancellationToken cancellationToken) IDictionary additionalBodyParameters, CancellationToken cancellationToken) Microsoft.Identity.Client.Internal.Requests.ConfidentialAuthCodeRequest.ExecuteAsync(CancellationToken cancellationToken) Microsoft.Identity.Client.Internal.Requests.RequestBaseClient.CancellationToken (Microsoft.Identity.Client.Internal.Requests.RequestBaseClient. ConfidentialClientExecutor.ExecuteAsync(AcquireTokenCommonParameters commonParameters, AcquireTokenByAuthorizationCodeParameters authorizationCodeParameters, CancellationToken cancellationToken) Microsoft.Identity.Web.TokenAcquisition.AddAccountToCacheFromAuthorizationCodeAsync(контекст авторизации CodeReceivedContext, IEnumerable scopes) в TokenAcquisition.cs + var result = await application Microsoft.IdentityCquisition.cs + var result = await application Microsoft.PlayManagerService_Explox.Explorer_Application_Microsoft.Identity_Clean_Application.cs + await tokenAcquisition.AddAccountToCacheFromAuthorizationCodeAsync(context, options.Scope).ConfigureAwait(false); Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.RunAuthorizationCodeReceivedEventAsync(OpenIdConnectMessage authorizationResponse, ClaimsPrincipal user, свойства AuthenticationProperties, JwtSecurityToken.NetConnect.OpenAuthentication.NetConnect.OpenAuthentication.JwtHandleRemoteAuthenticateAsync()

Код: из TokenAcquisition.cs - строка 127

                // Do not share the access token with ASP.NET Core otherwise ASP.NET will cache it and will not send the OAuth 2.0 request in
                // case a further call to AcquireTokenByAuthorizationCodeAsync in the future is required for incremental consent (getting a code requesting more scopes)
                // Share the ID Token though
                var result = await application
                    .AcquireTokenByAuthorizationCode(scopes.Except(_scopesRequestedByMsal), context.ProtocolMessage.Code)
                    .ExecuteAsync()
                    .ConfigureAwait(false);
                context.HandleCodeRedemption(null, result.IdToken);

1 ответ

Решено: это оказалось нулевым секретным значением клиента из-за неправильной конфигурации, как описано здесь: https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/1476

Другие вопросы по тегам