我是IdentityServer4中的新手4。现在,我尝试实现JWT-osterorization的微服务(通过将每个请求传递给API)。因此,该模式为原始-IDS4服务器作为验证服务器,ASP.NET身份 MSSQL用于客户端数据使用和存储,其他服务使用auth Service进行令牌验证。因此,我看了很多文章,但没有发现任何例子,可以自定义IDS4行为。例如,我希望客户端调用在IDS4项目中实现的AuthorizeByLogin(AuthorizeView model)
API方法,其中模型是2个字段的对象:Username, Password
。在此方法中,我想在数据库中检查用户并生成access_token,该方法传递给客户端以使用受保护的API。但是,没有一个示例如何执行此操作(调用API方法,传递对象并接收令牌)。大多数说"使用 */connect/doken为此"。
任何人都可以给我一个很好的代码示例吗?或者也许告诉我我应该实现哪些接口并正确地传递到ASP.NET Core App中的服务,用于身份验证Web API IdentityServer4实现?
谢谢。
您可以在身份服务器4文档中找到大量快速启动示例。另外,据我了解,您想使用ResourceOwnerCredentials
赠款类型。您将无法轻松地修改发出令牌的端点而不重新实现大多数Identity Server 4,但是您可以实现IResourceOwnerPasswordValidator
接口并设置具有适当允许的授予类型的客户端:
new Client
{
ClientId = "your_client",
AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
ClientSecrets =
{
new Secret("your_password".Sha256())
},
AllowedScopes = { ... }
}
之后,客户可以通过提供给定用户的用户名和密码以及自己的凭据:
来调用connecttoken
端点 var tokenResponse = await client.RequestPasswordTokenAsync(new PasswordTokenRequest
{
Address = disco.TokenEndpoint,
ClientId = "ro.client",
ClientSecret = "secret",
UserName = "alice",
Password = "password",
Scope = "api1"
});