IdentityServer4(OAuth2.0服务)折腾笔记
来源:互联网 发布:mac 服务器域名怎么看 编辑:程序博客网 时间:2024/05/19 09:14
以下,称这个使用了IdentityServer4的OAuth2.0服务的项目称为Passport项目。
组件说明(Nuget)
Passport项目所需组件
项目以Asp.net Core Identity项目模板初始化,集成IdentityServer4中间件;
集成IdentityServer4.AspNetIdentity用于管理User体系;
集成IdentityServer4.EntityFramework用于持久化OAuth2.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
搭建路线
IdentityServer4官方文档:using-asp-net-core-identity
IdentityServer4官方文档:using-entityframework-core-for-configuration-data
(可选)UI方面可临时用quickstart-ui
(可选)如果是IdentityServer3,还有IdentityServer3.Admin和IdentityServer3.Admin.EntityFramework
Token签名及验签机制选择:RSA。配置方法参考,再强调一遍千万不能忘记设置KeyId
ApiResource及Client的配置参考IdentityServer3和4各组件兼容性测试项目
Asp.Net WebApi(非.Net Core项目)对Scope进行细粒度验证(落实到一个具体Api),使用ScopeAuthorize,安装Nuget组件源码参考
Install-Package Thinktecture.IdentityModel.WebApi.ScopeAuthorization
Asp.Net Core项目部署笔记
服务器安装DotNetCore.1.0.4_1.1.1-WindowsHosting.exe
服务器管理员cmd执行 net stop was /y && net start w3svc
新建站点
站点应用程序池设为无托管代码(IIS仅作为反向代理和方便站点发布)
启用web部署
手动vs发布,选iis,webdeploy,执行连接字符串,指定迁移连接字符串
如果遇到IIS Aspnet Core Module启动dotnet进程失败,web.config启用stdoutLogEnabled,并创建logs目录,查看错误信息
参考资源
IdentityServer4官方文档
IdentityServer3和4各组件兼容性测试项目
IdentityServer4.Samples
validating-scopes-in-asp-net-4-and-5
ASP.NET Core实现OAuth2.0的ResourceOwnerPassword和ClientCredentials模式
NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(csproj—vs2017)
Host on Windows with IIS
原文地址:http://personball.com/oauth2/2017/06/04/tips-of-identity-server-4-application
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
- IdentityServer4(OAuth2.0服务)折腾笔记
- IdentityServer4:IdentityServer4+API+Client实践OAuth2.0客户端模式(1)
- OAuth2.0 学习笔记
- OAuth2.0学习笔记
- Taobao ID:淘宝OAuth2.0服务
- OAuth2笔记
- 使用OAuth2认证服务
- 学习 OAuth2.0 笔记( 一 )
- 【OAuth2.0学习笔记一】原理介绍
- 【raspberrypi】新手折腾笔记--01:安装FTP服务
- Authenticating to OAuth2 Services 验证OAuth2服务
- C# 实现 使用OAuth2.0 登录 Google 服务
- 淘宝开放平台淘宝OAuth2.0服务 (一)
- 淘宝开放平台淘宝OAuth2.0服务 (二)
- 【PHP】基于ThinkPHP框架搭建OAuth2.0服务
- 【PHP】基于ThinkPHP框架搭建OAuth2.0服务
- 【PHP】基于ThinkPHP框架搭建OAuth2.0服务
- OAuth2.0
- .net Core 生产环境 KestrelServer + Shell 实践
- C#码农的大数据之路
- 使用DotNetty编写跨平台网络通信程序
- Asp.Net Core轻量级Aop解决方案:AspectCore
- DDD领域驱动之干货 (一)
- IdentityServer4(OAuth2.0服务)折腾笔记
- EF通用数据层封装类(支持读写分离,一主多从)
- 编写高性能 .NET 代码 第一章:工具介绍 -- Performance Counters(性能计数器)
- ASP.NET 开发者 开始学习ASP.NET Core 2吧
- [翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Visual Studio
- 发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
- [深圳/广州]微软SQL技术沙龙分享会(MVP)
- [翻译]编写高性能 .NET 代码 第一章:性能测试与工具 -- 平均值 vs 百分比
- 码农不重视文档:开源项目深受其苦