IdentityModel - RequestClientCredentialsTokenAsync - PullRequest
0 голосов
/ 06 марта 2020

Этот метод RequestClientCredentialsTokenAsync для генерации токена (oauth2) прекрасно работает, когда я вызываю его из модульного теста, но из API MVC. Net Framework 4.6.1 У меня есть это исключение: (извините исключение - на французском языке)

<Error> <Message> Une erreur s'est produite lors de l'envoi de la demande. </Message> <ExceptionMessage> Une erreur s'est produite lors de l'envoi de la demande. </ExceptionMessage> <ExceptionType>System.InvalidOperationException</ExceptionType> <StackTrace> à JwtBearerAuthentication.JwtAssertionTokenManager.AcquireAccessToken() dans C:\Users\S851029\source\repos\Sources\AF.EFormSignature.JwtBearerAuthentication\JwtAssertionTokenManager.cs:ligne 55 à JwtBearerAuthentication.JwtAssertionTokenManager.GetAccessToken(Boolean forceRefresh) dans C:\Users\S851029\source\repos\Sources\AF.EFormSignature.JwtBearerAuthentication\JwtAssertionTokenManager.cs:ligne 28 à AF.EFormSignature.Web.Controllers.IdentiteNumeriqueController.RecuperationStatutIdentite() dans C:\Users\S851029\source\repos\Sources\AF.EFormSignature.Web\Controllers\IdentiteNumeriqueController.cs:ligne 72 à lambda_method(Closure , Object , Object[] ) à System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters) à System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) à System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary 2 аргумента, CancellationToken cancellationToken) --- Окончательный результат - исключение в порядке исключения из дуэли - à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задача) Отклонение от нормы - исключение из ситуации, предшествующее дуэли - исключение уровня - System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) Задача) à System.Web.Http.Controllers.ActionFilterResul t.d__2.MoveNext () --- Окончание трассы, в том числе перестановка, и исключение, исключение, переход на уровень --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задание) à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) à System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext () - окончательная версия для сброса денег Исключение - это уровень --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) ® System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи). MoveNext () Произошла ошибка. Самый лучший продукт Lors de L'envoi de la Demande. System. Net .Http. произошла ошибка Невозможно установить соединение с удаленной системой. Net .WebException ® System. Net .HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult, TransportContext & context) ® System. произошло. Неопределенная связь между автомобилем и частным сектором, определенным сроком службы и связью между ними ie автомобиль с привязкой к автомобилю 171.18.28.75:443 Система . Net .Sockets.SocketException à System. Net .Sockets.Socket.InternalEndConnect (IAsyncResult asyncResult) à System. Net .Sockets.Socket.EndConnect (IAsyncResult asyncResult *). (Boolean connectFailure, Socket s4, Socket s6, Socket & socket, IP-адрес и адрес, состояние ConnectSocketState, IAsyncResult asyncResult, Исключение и исключение)

        private string AcquireAccessToken()
        {
            // Build assertion
            var authenticationToken = GetAuthenticationToken();
            HttpClientHandler handler = new HttpClientHandler();
            handler.DefaultProxyCredentials = CredentialCache.DefaultCredentials;
            HttpMessageInvoker msg = new HttpMessageInvoker(handler);
            TokenClientOptions tokenClientOptions = new TokenClientOptions();
            tokenClientOptions.Address = TokenEndpointUrl;
            tokenClientOptions.ClientId = ClientId;
            tokenClientOptions.ClientSecret = ClientSecret;

            TokenClient tokenClient = new TokenClient(msg, tokenClientOptions);
            var payload = new Dictionary<string, string> {
                { "client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" },
                { "client_assertion", authenticationToken }
            };
            // Send authorization parameters using HTTP POST method and the Form Serialization
            // See http://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication
            var tokenResponse = tokenClient.RequestClientCredentialsTokenAsync(Scope, payload);
            if (tokenResponse.Result.IsError)
            {
                throw new InvalidOperationException(tokenResponse.Result.Exception.Message, tokenResponse.Result.Exception);
            }
            var accessToken = tokenResponse.Result.AccessToken;
            // Get token expiration date to configure cache expiration
            var accessTokenExpiration = GetTokenExpirationDate(accessToken);
            // Cache access token to prevent calling MAAM server for each request
            WriteTokenToCache(GenerateTokenCacheKey(), accessToken, new DateTimeOffset(accessTokenExpiration));
            return accessToken;
        }
...