Всегда получать «invalid_client» от Identity Server - PullRequest
0 голосов
/ 02 апреля 2020

Все кажется нормальным, но не работает, возвращает " Invalid_Client " - (400 - Плохой запрос). Обе стороны так просто ниже;

Код Identity Server:

                new Client
                {
                    ClientId = "js",
                    ClientSecrets = {
                        new Secret("secret".Sha256())
                    },
                    AllowedGrantTypes = GrantTypes.ClientCredentials,
                    RequireClientSecret = false,
                    AllowedScopes =
                    {
                        "api1"
                    }
                }

Javascript Код клиента:

axios.post('http://localhost:5000/connect/token',request, {
        headers: {
             'client_id' : 'js',
             'client_secret' : 'secret',
             'grant_type': 'client_credentials',
             'scope' : 'api1'

             }});

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Не следует использовать нормальную выборку или ось.

Поскольку служба является службой Oauth и должна использоваться библиотека client-oauth2 '.

Пример кода:

     var ClientOAuth2 = require("client-oauth2");
     var authRequest = new ClientOAuth2({
     clientId: IDENTITY_CONFIG.client_id,
     clientSecret: IDENTITY_CONFIG.client_secret,
     accessTokenUri: IDENTITY_CONFIG.token_endpoint,
     scopes: [IDENTITY_CONFIG.grantType]
  });

  return authRequest.credentials.getToken();
0 голосов
/ 03 апреля 2020

Параметры должны передаваться в теле запроса, а не в заголовке запроса. Вы можете изменить клиентский скрипт следующим образом:

const params = new URLSearchParams();
params.append('client_id', 'js');
params.append('client_secret', 'secret');
params.append('grant_type', 'client_credentials');
params.append('scope', 'api1');

axios.post('http://localhost:5000/connect/token', params, {
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
    }
}).then(function (response) {
    console.log(response.data);

});

А также настроить CORS для использования коллекции AllowedCorsOrigins в конфигурации клиента:

new Client
{
    ClientId = "js",
    ClientSecrets = {
        new Secret("secret".Sha256())
    },
    AllowedCorsOrigins= new List<string>() { "http://localhost:5002" },
    AllowedGrantTypes = GrantTypes.ClientCredentials,
    RequireClientSecret = false,
    AllowedScopes =
    {
        "api1"
    }
},
...