2016-11-23 109 views
1

在使用idsv4和端口「5000」運行我identityserver應用.NetFramework阿比無法驗證有一個客戶身份服務器4令牌在使用Identity Server的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框架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(未經授權)。 我已經完成了所有核心API,並且每件事情都可以!

+0

這是公認的行爲,你的API不應允許身份不明的服務器發放的令牌。您的API是針對在端口7000上運行的IdentityServer進行註冊的。因此,它只接受由該身份服務器發出的令牌。 – rawel

+0

那麼,「使用Identity Server 3的NetFramework Api」是什麼意思? – rawel

+0

完整.net框架api使用身份server3令牌驗證庫 – RezaDefaei

回答

0

切換到X509證書而不是樣本附帶的證書後,一切正常工作正常。

擺脫.AddDeveloperSigningCredential的(),並使用.AddSigningCredential(GET_THE_CERT_FROM_YOUR_CERT_STORE)

相關問題