我正在尝试通过 / connect / token 端点在Identity Server 4中对用户进行身份验证。我要填写邮递员的所有必填字段:
,我总是收到“ invalid_client ”回复。
我在下表中插入了值:
对于PasswordHash列中的表AspNetUsers,我添加了用SHA256哈希的哈希密码。在ClientGrantTypes中,我添加了GrantType,其值为'password',并插入了正确的ClientId。
这是我的ConfigureServices的样子:
public void ConfigureServices(IServiceCollection services)
{
string connectionString = "Server=192.168.1.108; Port=5432; Database=Users; User Id=postgres;Password=RandomPassword123";
var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;
services.AddIdentityServer()
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = builder =>
{
builder.UseNpgsql(connectionString, action =>
{
action.MigrationsAssembly(migrationsAssembly);
});
};
})
.AddAspNetIdentity<Users>().AddConfigurationStore(options=>
{
options.ConfigureDbContext = builder =>
{
builder.UseNpgsql(connectionString, action =>
{
action.MigrationsAssembly(migrationsAssembly);
});
};
}).AddDeveloperSigningCredential();
services.AddEntityFrameworkNpgsql();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
我正在努力弄清自己在做什么错,因此将不胜感激。
编辑:
我包括了日志记录。这是我在邮递员中拥有的屏幕截图: http://i.imgur.com/Sk78V2y.png
这是Identity Server的完整日志:
[21:25:46调试] IdentityServer4.Hosting.EndpointRouter请求路径 / connect / token匹配端点类型令牌
[21:25:46调试] IdentityServer4.Hosting.EndpointRouter端点 已启用:令牌,已成功创建处理程序: IdentityServer4.Endpoints.TokenEndpoint
[21:25:46信息] IdentityServer4.Hosting.IdentityServerMiddleware调用 IdentityServer端点:用于的IdentityServer4.Endpoints.TokenEndpoint / connect /令牌
[21:25:46调试] IdentityServer4.Endpoints.TokenEndpoint启动令牌 请求。
[21:25:46调试] IdentityServer4.Validation.ClientSecretValidator 开始客户端验证
[21:25:46调试] IdentityServer4.Validation.BasicAuthenticationSecretParser开始 解析基本身份验证机密
[21:25:46调试]找到IdentityServer4.Validation.SecretParser解析器 秘密:BasicAuthenticationSecretParser
[21:25:46调试] IdentityServer4.Validation.SecretParser秘密ID 找到:琉球
[21:25:46调试] IdentityServer4.EntityFramework.Stores.ClientStore 在数据库中发现的琉球:假
[21:25:46错误] IdentityServer4.Validation.ClientSecretValidator否 找到ID为“ Ryukote”的客户。流产
日志让我感到困惑,因为有些东西不正确。可以通过查看我提供的Postman屏幕截图来确认。
答案 0 :(得分:1)
错误来自BasicAuthenticationSecretParser
,因此我认为您对令牌端点的请求中可能包含基本授权标头
Authorization: Basic Ryukote:password
这是IdentityServer从那里获取客户端ID“ Ryukote”的地方。
从您的请求中删除授权标头。