千家信息网

如何使用IdentityServer4进行OAuth2.0服务

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇文章给大家分享的是有关如何使用IdentityServer4进行OAuth2.0服务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。以
千家信息网最后更新 2024年11月23日如何使用IdentityServer4进行OAuth2.0服务

本篇文章给大家分享的是有关如何使用IdentityServer4进行OAuth2.0服务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

以下,称这个使用了IdentityServer4的OAuth3.0服务的项目称为Passport项目。

组件说明(Nuget)

Passport项目所需组件

  • 项目以Asp.net Core Identity项目模板初始化,集成IdentityServer4中间件;

  • 集成IdentityServer4.AspNetIdentity用于管理User体系;

  • 集成IdentityServer4.EntityFramework用于持久化OAuth3.0相关角色数据;

  • 集成NLog.Web.AspNetCore用于输出日志;

  • 集成System.Security.Cryptography.Csp使用RSA进行Token签名;

ApiResource(提供Api服务,注册到Passport中)所需组件

  • 如果是Asp.Net Core WebApi项目:集成IdentityServer4.AccessTokenValidation(使用Authorize Policy机制即可);

  • 如果是Asp.Net WebApi项目:集成IdentityServer3.AccessTokenValidation(中间件)+Thinktecture.IdentityModel.WebApi.ScopeAuthorization(提供ScopeAuthorize)

Client所需组件 IdentityModel(提供TokenClient)

注意事项

  • 其一,ApiResource 无需配置ApiSecret(中间件会请求http://{passport-project-domain}/.well-known/openid-configuration/jwks获取RSA公钥验签);

  • 其二,Client端(调用方)必须设置密码(clientId,clientSecret,请求所需scopes)

  • 其三,配置RSA的时候,千万不能忘记设置KeyId,否则IdentityServer3.AccessTokenValidation获取jwks时kid为null将抛异常。建议KeyId和Rsa的Base64字符串一起存配置文件。参考issue

搭建路线

  1. IdentityServer4官方文档:using-asp-net-core-identity

  2. IdentityServer4官方文档:using-entityframework-core-for-configuration-data

  3. (可选)UI方面可临时用quickstart-ui

  4. (可选)如果是IdentityServer3,还有IdentityServer3.Admin和IdentityServer3.Admin.EntityFramework

  5. Token签名及验签机制选择:RSA。配置方法参考,再强调一遍千万不能忘记设置KeyId

  6. ApiResource及Client的配置参考IdentityServer3和4各组件兼容性测试项目

  7. Asp.Net WebApi(非.Net Core项目)对Scope进行细粒度验证(落实到一个具体Api),使用ScopeAuthorize,安装Nuget组件源码参考
    Install-Package Thinktecture.IdentityModel.WebApi.ScopeAuthorization

Asp.Net Core项目部署笔记

  1. 服务器安装DotNetCore.1.0.4_1.1.1-WindowsHosting.exe

  2. 服务器管理员cmd执行 net stop was /y && net start w3svc

  3. 新建站点

  4. 站点应用程序池设为无托管代码(IIS仅作为反向代理和方便站点发布)

  5. 启用web部署

  6. 手动vs发布,选iis,webdeploy,执行连接字符串,指定迁移连接字符串

  7. 如果遇到IIS Aspnet Core Module启动dotnet进程失败,web.config启用stdoutLogEnabled,并创建logs目录,查看错误信息

以上就是如何使用IdentityServer4进行OAuth2.0服务,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0