
.net core 3.1 Identity Server4 (自定义模式)
IdentityServer4除了提供常规的几种授权模式外(AuthorizationCode、ClientCredentials、Password、RefreshToken、DeviceCode),还提供了可以拓展的授权模式,下面就根据源码简单说下IdentityServer4是如何实现自定义授权模式的。
创建CustomAuthCodeValidator类
IExtensionGrantValidator
接口实现了自定义验证的扩展。接着我们通过编写简单的源码实现验证逻辑。
public class CustomAuthCodeValidator : IExtensionGrantValidator
{
private readonly UserManager<IdentityUser> _userManager;
public CustomAuthCodeValidator(UserManager<IdentityUser> userManager)
{
_userManager = userManager;
}
public string GrantType => "auth_custom";
public async Task ValidateAsync(ExtensionGrantValidationContext context)
{
var name = context.Request.Raw["name"];
var age = context.Request.Raw["age"];
// 创建无效授权的返回实例
var errorValidationResult = new GrantValidationResult(TokenRequestErrors.InvalidGrant);
// 判断name参数与age参数是否为空
if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(age))
{
// 赋予无效授权结果
context.Result = errorValidationResult;
return;
}
if (name!="bob" && age!="19")
{
// 赋予无效授权结果
context.Result = errorValidationResult;
return;
}
// 获取到有效的用户 subject_id
var user = await _userManager.FindByNameAsync(name);
// 返回有效结果
context.Result = new GrantValidationResult(user.Id, GrantType);
}
}
在Startup.cs中实现自定义验证
.AddExtensionGrantValidator<CustomAuthCodeValidator>()
输入相对应的请求参数进行测试
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术