2016-11-23 13 views
1

В моем identityserver приложения, которые используют idsv4 и запустить на порт «5000» есть клиентидентификации сервера 4 маркера не проверять в .NetFramework Апи, которые используют идентификацию сервера 3

  new Client 
      { 
      ClientId = "client", 

      // no interactive user, use the clientid/secret for authentication 
      AllowedGrantTypes = GrantTypes.ClientCredentials, 

      // secret for authentication 
      ClientSecrets = 
      { 
       new Secret("secret".Sha256()) 
      }, 

      // scopes that client has access to 
      AllowedScopes = { "api1" } 
     }` 

и в моем запуске .NET Framework API, класс, который не использует порт не "7001":

app.UseIdentityServerBearerTokenAuthentication(
new IdentityServerBearerTokenAuthenticationOptions 
{ 
    Authority = "http://localhost:5000", 
    ValidationMode = ValidationMode.ValidationEndpoint, 

     RequiredScopes = new[] { "api1" } 
    });` 

и, наконец, в моем клиенте уловом маркер успешно:

static TokenResponse GetClientToken() 
    { 
     var client = new TokenClient(
     "http://localhost:5000/connect/token", 
     "client", 
     "secret"); 

    return client.RequestClientCredentialsAsync("api1").Result; 
}` 

, но когда я использую этот маркер для вызова API:

static void CallApi(TokenResponse response) 
{ 
    var client = new HttpClient(); 
    client.SetBearerToken(response.AccessToken); 

    Console.WriteLine(client.GetStringAsync("http://localhost:7001/api/identity/get").Result); 
} 

клиент сгенерирует исключение:

ответа код состояния не указывает успех: 401 (Несанкционированное). Я сделал все из них в core api, и все в порядке!

+0

Это принятое поведение, Ваш API не должны позволять маркеры, выпущенные неизвестными серверами идентификации. Ваш API зарегистрирован на сервере IdentityServer на порте 7000. Таким образом, он будет принимать только токен, выданный этим сервером идентификации. – rawel

+0

Тогда что вы подразумеваете под «NetFramework Api, использующим Identity Server 3»? – rawel

+0

полная инфраструктура .net framework, использующая библиотеку проверки подлинности идентификатора сервера3. – RezaDefaei

ответ

0

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

Избавьтесь от .AddDeveloperSigningCredential() и использовать .AddSigningCredential (GET_THE_CERT_FROM_YOUR_CERT_STORE)

 Смежные вопросы

  • Нет связанных вопросов^_^