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,並且每件事情都可以!
這是公認的行爲,你的API不應允許身份不明的服務器發放的令牌。您的API是針對在端口7000上運行的IdentityServer進行註冊的。因此,它只接受由該身份服務器發出的令牌。 – rawel
那麼,「使用Identity Server 3的NetFramework Api」是什麼意思? – rawel
完整.net框架api使用身份server3令牌驗證庫 – RezaDefaei