洛阳网红,乐陵seo,如何在网上建立自己的网站,固安县建设局网站一、IdentityServer的预备知识要学习IdentityServer#xff0c;事先得了解一下基于Token的验证体系#xff0c;这是一个庞大的主题#xff0c;涉及到Token#xff0c;OAuthOpenID#xff0c;JWT#xff0c;协议规范等等等等#xff0c;园子里已经有很多介绍的文章了… 一、IdentityServer的预备知识 要学习IdentityServer事先得了解一下基于Token的验证体系这是一个庞大的主题涉及到TokenOAuthOpenIDJWT协议规范等等等等园子里已经有很多介绍的文章了个人觉得solenovex的这一篇文章《学习IdentityServer4的预备知识》言简意赅可以快速的看看。另外savaboard的《ASP.NET Core 之 Identity 入门一》和《ASP.NET Core 之 Identity 入门二》这两篇也可以一看对Claims和Identity的基本知识讲的比较通俗易懂深入浅出有故事情节哈哈。 重点关注一下上面这张图也是来自solenovex的文章对于一个User已注册来说他会首先向Authorization Server表明自己的身份比如输入用户名和密码然后Authorization Server为其发放了一个token而这个token就好比是把家里的钥匙配了一把clone新的此后该User就可以访问API请求获取Orders订单数据了。当然实际中可能Authorization Server和API Server不在同一个区域内它们可能只能遥望对方。此外User还可以基于这个token去访问第三方服务第三方服务会使用这个API来访问API Server向其提供token比提供usernamepassword要安全得多。二、IdentityServer极简介绍 IdentityServer4这里只使用版本号为4是一个基于OpenID Connect和OAuth 2.0的针对ASP.NET Core 2.0的框架。IdentityServer是将规范兼容的OpenID Connect和OAuth 2.0终结点添加到任意ASP.NET Core应用程序的中间件。通常你构建或重新使用包含登录和注销页面的应用程序IdentityServer中间件会向其添加必要的协议头以便客户端应用程序可以使用这些标准协议与其对话。 我们可以用IdentityServer来做啥 1身份验证服务官方认证的OpenID Connect实现 2单点登录/注销SSO 3访问受控的API为不同的客户提供访问API的令牌比如MVC网站、SPA、Mobile App等 4等等等......三、Started:第一个AuthorizationServer1.1 建立一个ASP.NET Core空Web项目 建立ASP.NET Core项目使用Empty空模板。 为了更好地查看日志信息同时考虑到IISExpress启动起来真的很慢修改lanuchSettings.json文件如下1.2 安装并配置IdentityServer4 Step1.首先安装IdentityServer4:NuGetInstall-Package IdentityServer4 Step2.配置ASP.NET Core管道即修改Configure方法 Step3.为了要把IdentityServer注册到容器中需要对其进行配置而这个配置中要包含三个信息 1哪些API可以使用这个AuthorizationServer 2哪些Client可以使用这个AuthorizationServer 3哪些User可以被这个AuthrizationServer识别并授权 这里为了快速演示我们写一个基于内存的静态类来快速填充上面这些信息实际中可以持久化在数据库中通过EF等ORM获取也可以通过Redis获取 Step4.对于Token签名需要一对公钥和私钥不过IdentityServer为开发者提供了一个AddDeveloperSigningCredential()方法它会帮我们搞定这个事并默认存到硬盘中。当切换到生产环境时还是得使用正儿八经的证书更换为使用AddSigningCredential()方法。 1.3 获取你心心念念的Token Step1.启动刚刚我们建立的AuthorizationServer程序这里我们绑定的是5000端口。 Step2.启动Postman/SoapUI等API测试工具通过向HTTP Body中填写数据发起POST请求 Step3.发送一个错误的数据看看返回的是啥(这里输入了一个不在定义列表中的client_id) Step4.查看控制台的日志信息表示获取Token的这个请求成功了日志中client_secret和password都是不会直接明文显示的。 Step5.IdentityServer中我们设置这几个API Service的Grant_Type是ResourceOwnerPasswordAndClientCredentials点击这里了解资源拥有者密码凭据许可因此我们还可以使用ClientCredentials点击这里了解客户端凭据许可如下所示 Step6.再次查看控制台日志信息这次没有关于User相关的任何信息显示了。 Step7.基本的开发结束对于开发阶段我们使用IdentityServer为开发者提供的临时证书即可但是后面仍然需要生成一些正儿八经的证书。这里我们通过OpenSSL来生成首先去官网下载一个这里使用的是Win64_1.1版本。打开Powershell或者CMD输入以下命令cmdopenssl req -newkey rsa:2048 -nodes -keyout cas.clientservice.key -x509 -days 365 -out cas.clientservice.cer下面将生成的证书和Key封装成一个文件以便IdentityServer可以使用它们去正确地签名tokenscmdopenssl pkcs12 -export -in cas.clientservice.cer -inkey cas.clientservice.key -out cas.clientservice.pfx 中途会提示让你输入Export Password这个password后面会用到记住它。最终导出后的结果如下图所示 这里我将其放到了项目结构文件夹中并设置这个pfx文件为“如果较新则复制”确保可以在最后生成的目录里边。现在就可以修改一下ConfigureServices()方法了这里我将证书的路径和导出密码都写到了配置文件中{ Certificates: { CerPath: certificate\\cas.clientservice.pfx, Password: manulife}
} 好配置正儿八经的证书这一步骤Over。四、IdentityServer QuickStart-UI4.1 关于QuickStart UI IdentityServer为我们提供了一套UI以便使我们能够快速地开发具有基本功能的认证/授权界面我们可以去这个地址https://github.com/IdentityServer/IdentityServer4.Quickstart.UI/tree/release 下载并将其复制到我们的项目目录中。 复制完成后我们的项目结构如下图所示4.2 修改DI方法 1使用MVC与静态文件由于wwwroot下有很多静态资源文件 2注册MVC4.3 Run 1首页这里由于我已经登录所以这里会把我的账号显示了出来 2Logout页刚刚说到我已经实现Login了所以我这里Logout一下 3Login页这里只能识别我们在之前配置的静态User列表中那些User 登录之后显示You have not given access to any applications表示我们还没有给他授予访问任何API或网站模块的权限。后续我们会创建API和MVC网站来演示如何对其进行授权和访问。 五、小结 本篇主要简单的介绍了IdentityServer以及如何基于IdentityServer建立一个基本的AuthorizationServer如何获取Token以及集成QuickStart UI实现基本的界面展示。后续还会创建API和MVC网站来和IdentityServer进行集成以演示如何对User授予访问API和MVC网站的访问权限。示例代码 Click https://github.com/EdisonChou/EDC.IdentityServer4.Demo参考资料《identityserver4官方文档》 重点关注那些流程图与术语ddrsql《IdentityServer4之Resource Owner Password Credentials(资源拥有者密码凭据许可)》ddrsql《IdentityServer4之Client Credentials客户端凭据许可》solenovex《学习Identity Server4的预备知识》solenovex《使用Identity Server 4建立Authorization Server (1)》solenovex《使用Identity Server 4建立Authorization Server (2)》solenovex《使用Identity Server 4建立Authorization Server (3)》使用Identity Server 4建立Authorization Server (4)使用Identity Server 4建立Authorization Server (5)Identity Service - 解析微软微服务架构eShopOnContainers二IdentityServer4(OAuth2.0服务)折腾笔记IdentityServer4 指定角色授权Authorize(Rolesadmin))IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护APIIdentityServer4 SigningCredentialRSA 证书加密IdentityServer4 实现自定义 GrantType 授权模式IdentityServer4 配置负载均衡IdentityServer4使用教程1--搭建ID4网站IdentityServer410- 添加对外部认证的支持之QQ登录IdentityServer4 第三方快速入门和示例原文地址https://www.cnblogs.com/edisonchou/p/identityserver4_foundation_and_quickstart_01.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com