ASP.NET Core技术--使用用户密码保护API接口
2023-06-13 09:17:34 时间
使用用户密码保护API接口
public static IEnumerable<IdentityResource> GetIdentityResources()
{
var customProfile = new IdentityResource(
name: "custom.profile",
displayName: "Custom profile",
claimTypes: new[] { "name", "email", "status" });
return new List<IdentityResource>
{
new IdentityResources.OpenId(),
new IdentityResources.Profile(),
customProfile
};
}
//JWT令牌格式
//JSON Web Token 是一种开放的行业标准 RFC 7519方法,用于在双方之间安全地表示声明。
//获取令牌值
string token = HttpContext.GetTokenAsync("access_token").Result;
//JWT身份令牌中的申明转换为微软申明
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
ClaimTypeMapping.cs
//扩展用户密码验证逻辑
public class ResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
{
public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
{
if (context.UserName == "username" && context.Password == "password")
{
context.Result = new GrantValidationResult(context.UserName,
GrantType.ResourceOwnerPassword);
}
}
return Task.CompletedTask;
}
}
services.AddIdentityServer().AddResourceOwnerValidator<ResourceOwnerPasswordValidator>();
获取用户详细信息
public static IEnumerable<IdentityResource> IdentityResources =>
new List<IdentityResource>
{
new IdentityResources.OpenId(),
new IdentityResources.Profile()
};
AllowedScopes = {
"api1",
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile
},
var userInfo = await apiClient.GetUserInfoAsync(new UserInfoRequest
{
Token = tokenResponse.AccessToken,
Address = disco.UserInfoEndpoint,
});
【小结】
本小节简单介绍了使用API时所采用的安全措施。
相关文章
- [.NET控件]Telerik RadControls for ASP.NET AJAX 2008 Q1 net 2.0 Web.UI「建议收藏」
- ASP.NET Core 6框架揭秘实例演示[30]:利用路由开发REST API
- ASP.NET Core技术--Identity Server 4 基础
- 【愚公系列】2023年02月 .NET CORE工具案例-Workflow-Core轻量级工作流引擎(数据流转)
- .netLinux下部署ASP.NET环境指南(linux部署asp)
- .net搭建ASP.NET应用程序在Linux系统上(linux搭建asp)
- .net安装 Linux 上的 ASP.NET 环境(linux安装asp)
- .net利用MSSQL连接ASP.NET的办法探索(mssql 连接asp)
- ASP与Oracle配合实现数据写入(asp oracle写入)
- NET环境下 MySQL数据库应用实践(.net配合 mysql)
- asp.net下百度的编码和解码
- asp.net验证一个字符串是否符合指定的正则表达式
- asp.net(C#)动态添加非ASP的标准html控件(如添加Script标签)
- ASP.NET生成Google网站地图的代码
- asp.net(C#)解析Json的类代码
- .Net中导出数据到Excel(asp.net和winform程序中)
- asp.net导出Excel显示中文乱码的解决方法
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- Asp.Net获取网站截图的实例代码
- 拦截asp.net输出流并进行处理的方法
- ASP.NET中使用开源组件NPOI快速导入导出Execl数据