Утверждение не прошло проверку подписи

avatar
Riya
9 августа 2021 в 06:54
138
1
1

Я получаю следующую ошибку в коде: var authResult = await authContext.AcquireTokenAsync(Url, appCred, новый UserAssertion(accessToken));

Код авторизации

var clientID = ConfigurationManager.AppSettings["ClientID"];
                var clientSecret = ConfigurationManager.AppSettings["ClientSecret"];
                var tenant = ConfigurationManager.AppSettings["Tenant"];

                var appCred = new ClientCredential(clientID, clientSecret);
                
                var authContext = new AuthenticationContext(
                    "https://login.microsoftonline.com/" + tenant);
                
var authResult = await authContext.AcquireTokenAsync(Url, appCred,
                    new UserAssertion(accessToken));

Ошибка:

Утверждение не прошло проверку подписи. [Причина. Предоставленное значение подписи не соответствует ожидаемому значению подписи. Thumbprint of key used by client: '', Found key 'Start=>**'] Идентификатор трассировки: 603df266-b9b4-4b27-8216-effc8b879a01 Идентификатор корреляции: 9a7990ea-41ae-47a0-97da-ceb7cb07ecf0 Отметка времени: 2021-08-09 06:46:28Z в Microsoft.IdentityModel.Clients.ActiveDirectory.AdalHttpClient.d__211.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.IdentityModel.Clients.ActiveDirectory.AdalHttpClient.<GetResponseAsync>d__201.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__67.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__64.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenOnBehalfHandler.d__2.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__55.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.d__50.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.d__35.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в SpoWebApi.Controllers.AlbathaServicesController.d__13.MoveNext() в .ServicesController.cs:строка 378 Microsoft.IdentityModel.Clients.ActiveDirectory

Источник
Md Farid Uddin Kiron
9 августа 2021 в 07:24
0

Поделитесь своим полным токеном или кодом запроса авторизации.

Riya
9 августа 2021 в 07:41
0

Пожалуйста, найдите обновленный вопрос

Md Farid Uddin Kiron
9 августа 2021 в 07:52
0

Пробуете ли вы какой-либо официальный образец, если да, пожалуйста, обратитесь к нему.

Riya
9 августа 2021 в 08:20
0

@MdFaridUddinKiron, нет, это существующий код. Срок действия секрета клиента в Azure истек. после создания нового секрета я получаю эту ошибку.

Md Farid Uddin Kiron
9 августа 2021 в 09:10
0

Не могли бы вы попробовать получить токен, используя post man с теми же учетными данными, если вы можете получить его, то проблема будет доказана, что ваши учетные данные в порядке, так как ваш код выглядит нормально, поэтому сначала проверьте токен на postman.

Md Farid Uddin Kiron
26 августа 2021 в 09:17
0

Здравствуйте, могу ли я чем-нибудь еще вам помочь?

Ответы (1)

avatar
Md Farid Uddin Kiron
9 августа 2021 в 10:01
1

Я думаю, что в вашем коде есть небольшая проблема, для получения токена вы можете попробовать способ ниже, который отсутствует в вашем коде, первые шаги - получить токен, но здесь new UserAssertion(accessToken)); вы передаете token как это получается?

Кроме этого, если эта часть предназначена для получения токена, то эта часть должна быть такой, как показано ниже:

        [HttpPost]
        public async Task<IActionResult> GetAccessToken()
        {
            // Approach 1
            AuthenticationContext authContext = new AuthenticationContext("https://login.microsoftonline.com/" + "Tenant");
            ClientCredential clientCredential = new ClientCredential("ClientId", "Secret");
            var authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com", clientCredential); //Your Scope and App Credentials

            // Approach 2
            var clientID = "";
            var clientSecret = "";
            var tenant = "";

            var appCred = new ClientCredential(clientID, clientSecret);

            var authContext = new AuthenticationContext(
                "https://login.microsoftonline.com/" + tenant);

            var authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com", appCred);


            return Ok();
        }

Как видите, я получаю токен, как и ожидалось. Вы можете обратиться к этому официальному документу здесь

enter image description here

Надеюсь, это поможет.

Riya
9 августа 2021 в 11:24
0

У меня есть токен, который передается через заголовок. Затем я аутентифицирую этот токен в вышеупомянутом коде.

Md Farid Uddin Kiron
9 августа 2021 в 11:25
0

В этом случае поделитесь своим полным кодом. Чтобы мы могли размножаться.