我是IdentityServer4的新手。现在,我尝试使用JWT-authorization实现微服务(通过向API传递每个请求的令牌)。因此,该模式是原始的- IDS4服务器作为身份验证服务器,ASP.NET身份+ MSSQL用于客户端数据的使用和存储,其他服务使用身份验证服务进行令牌验证。因此,我看了很多文章,但没有找到可以自定义IDS4行为的示例。例如,我希望客户端调用在IDS4项目中实现的model接口方法,其中AuthorizeByLogin(AuthorizeView model)
是两个字段的对象:Username, Password
。在此方法中,我希望检查数据库中的用户并生成access_token,它将传递给客户端以使用受保护的应用程序接口。但是没有一个示例可以做到这一点(调用API方法,传递对象和接收令牌)。它的大部分内容都是“使用*/connect/token”。
有没有人能给我举个例子,说明这种方式很好地实现了?或者告诉我应该实现哪些接口并正确地传递给ASP.NET核心应用程序中的服务,以便实现Authentication Web API + IdentityServer4实现?
谢谢。
发布于 2019-03-13 02:34:30
您可以在Identity Server 4 docs中找到过多的快速入门示例。另外,据我所知,您希望使用ResourceOwnerCredentials
授权类型。如果不重新实现大多数Identity Server4,您将无法轻松地修改颁发令牌的端点,但是您可以实现IResourceOwnerPasswordValidator
接口并使用适当的允许授权类型设置客户端:
new Client
{
ClientId = "your_client",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
ClientSecrets =
{
new Secret("your_password".Sha256())
},
AllowedScopes = { ... }
}
之后,客户端可以通过提供给定用户的用户名和密码以及自己的凭据来调用connect\token
端点:
var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
{
Address = disco.TokenEndpoint,
ClientId = "ro.client",
ClientSecret = "secret",
UserName = "alice",
Password = "password",
Scope = "api1"
});
https://stackoverflow.com/questions/55126942
复制相似问题