本文前提说明
- 本文在文章:(1)- IdentityServer 4 授权端 - (静态)账户密码模式搭建(.net core 3.1)的基础上构建
新建数据库,并新建服务(SystemAccountService.cs)可访问到数据
- 该流程忽略,数据库访问可以使用Dapper、SqlSugar等
- 数据库的表数据如下:账户:admin,密码:123456
在根目录下新建类(ResourceOwnerValidator.cs)
public class ResourceOwnerValidator : IResourceOwnerPasswordValidator
{
public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
{
if (new SystemAccountService().IsExist(context.UserName, context.Password))
{
context.Result = new GrantValidationResult(subject: context.UserName, authenticationMethod: OidcConstants.AuthenticationMethods.Password);
}
else
{
context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "无效的秘钥");
}
return Task.FromResult("");
}
}
修改StartUp.cs的内容如下
使用Postman验证