我试图使用IdentityServer3,但我不知道为什么我会得到" invalid_client"总是错误,总是无论我做什么。
这是我使用的代码:
//Startup.cs (Auth c# project)
public void Configuration(IAppBuilder app) {
var inMemoryManager = new InMemoryManager();
var factory = new IdentityServerServiceFactory()
.UseInMemoryClients(inMemoryManager.GetClients())
.UseInMemoryScopes(inMemoryManager.GetScopes())
.UseInMemoryUsers(inMemoryManager.GetUsers());
var options = new IdentityServerOptions {
Factory = factory,
RequireSsl = false
};
app.UseIdentityServer(options);
}
InMemoryManager助手。
//InMemoryManager.cs
public class InMemoryManager {
public List<InMemoryUser> GetUsers() {
return new List<InMemoryUser> {
new InMemoryUser {
Username = "alice",
Password = "password",
Subject = "2",
Claims = new [] {
new Claim("User name", "Alice")
}
}
};
}
public IEnumerable<Scope> GetScopes() {
return new[] {
new Scope {
Name = "api1",
DisplayName = "API 1"
}
};
}
public IEnumerable<Client> GetClients() {
return new[] {
new Client {
ClientName = "Silicon on behalf of Carbon Client",
ClientId = "carbon",
Enabled = true,
//AccessTokenType = AccessTokenType.Reference,
Flow = Flows.ResourceOwner,
ClientSecrets = new List<Secret> {
new Secret("secret".Sha256())
},
AllowedScopes = new List<string> {
"api1"
}
}
};
}
}
这是我一直得到的结果。
我正在使用邮递员来尝试Auth服务器,但我总是遇到这个错误。我已经阅读了另一种解决方案,但没有任何可行的解决方案,我也不知道还有什么可以尝试。
干杯。
答案 0 :(得分:1)
您的要求如下:
clientId
/ clientSecret
的授权标头。在您的情况下carbon
/ secret
。 username
/ password
应为alice
/ password
。如果您不需要刷新令牌,则可以从请求中排除offline_access
范围。 答案 1 :(得分:1)
答案 2 :(得分:0)
最新答案,但是对我来说,这是在尝试使用用户名和密码登录时按照IdentityServer 4教程进行的。我使用了第一个教程中的代码(使用客户端凭据),并修改了客户端以使用密码。之后,我不断收到此错误。
要修复此问题,请在IdentityServer项目config.cs
中的GetClients
方法中,将AllowedGrantTypes
设置为GrantTypes.ResourceOwnerPassword
,并从{{ 1}}到ClientId
(或您在Client项目的program.cs中使用的任何客户端名称)。