用ASOS建立自定义的OpenID 服务(一)-----------简介
翻译文章 原文地址
这一系列共包括9个部分,这是第一部分,下面是英文原文地址:
- Introduction
- Choosing the right flow(s)
- Registering the middleware in the ASP.NET Core pipeline
- Creating your own authorization provider
- Implementing the resource owner password credentials grant
- Implementing the authorization code and implicit flows
- Adding custom claims and granting scopes
- Testing your authorization server with Postman
- Conclusion
什么是ASOS
ASOS是AspNet.Security.OpenIdConnect.Server 的简称,是asp.net core框架下一个开源的OAuth2/OpenID连接服务的中间件。设计为支持.net 桌面框架和新的.net core平台。ASOS是 aspnet-contrib initiative 的一部分,是OAuth2社交登录的基础部分,可见连接( the OAuth2 social providers for ASP.NET Core)。
ASOS不止使用了OAuth2 authorization server同样的低层、协议优先的方法,而且还添加了新的openID 连接的特点例如( 配置发现 provider configuration discovery, 客户端发起的退出登录client-initiated logout or 用户信息支持userinfo support),另外还实现了最近Oauth2的新的规范( token撤销 token revocation or token introspection 这个需要感谢Michael Ciarlillo 的贡献)
ASOS与其他身份服务的区别
同其他身份服务不同,ASOS只提供在应用和协议细节之间的联系,不提供类似用户管理,验证页面和CORS策略的功能,这些必须自己实现。
尽管ASOS需要很多OAuth2/OpenID知识,而且需要做更多的工作相比其他交钥匙项目(比如说 IdentityServer 或者 OpenIddict),ASOS更加灵活并且易于与现有环境融合。
你的项目是否要用ASOS
若果你不熟悉OAuth2 或者 OpenID,你最好不用ASOS。相比OAuthAuthorizationServerMiddleware,ASOS设计为底层框架,而不是拿来即用的服务。必须实现自己的授权逻辑和其他功能。
当然,如果你不想成为ASOS的专家,ASOS也为你提供了一系列支持(例如请求验证、配置发现、token序列化与反序列化),你只要实现其余的具体部分即可,例如客户认证和确认页面。
OpenIddict介绍
在ASOS和ASP.net Core
Based on ASOS and ASP.NET Core Identity身份框架的基础上。OpenIddict 是一个提供大多数认证功能的交钥匙项目,OpenIddict原生的支持OAuth2/OpenID互动和非互动的流控制,并且容易实现。仅需加一个类似ASP.NET Core Identity AccountController的
AuthorizationController。
尽管Openiddict刚刚起步,它是简单项目的最好选择。如果你需要更加复杂的并且全程控制的Openid服务,ASOS是你最好的选择。关于OpenIDDict可以参考下面几篇文章:
- Setting up ASP.NET v5 (vNext) to use JWT tokens (using OpenIddict)
- Using OpenIddict to easily add token authentication to your .NET web apps
- Authorizing your .NET Core MVC6 API requests with OpenIddict and Identity
这个系列从简到繁,基本涵盖了建立ASOS 服务端的各个方面,敬请期待。
最新文章
- ipv4理论知识2-分类编址、ip分类、网络标识、主机标识、地址类、地址块
- PHP 使用 password_hash() 给密码加密
- dyld: Symbol not found: _OBJC_CLASS_$_NSURLSessionDataTask
- DB设计原则(二)如何拆、分表
- Android DownloadThread.run()学习
- 时间处理总结(一).net
- 使用Swiper轮播插件引起的探索
- openstack搭建之-neutron配置(11)
- day29 二十九、元类、单例
- web api HttpResponseMessage的简单使用
- JS -- serializeJSON
- 阿里云负载均衡SLB 七层https协议 nginx 获取真实IP
- Linux下对文件进行加密备份的操作记录
- 《转》vue 常用ui组件
- 笔记本(ThinkPad)怎样关闭触摸板
- Eclipse中Maven WEB工程tomcat调试
- js判断手机是否安装了某一款app,有则打开,没有去下载
- PHP开发者应了解的24个库
- Java将字符串转成二进制码
- 8-11 Add All uva 10954
热门文章
- 查找算法的实现(C/C++实现)
- ZOJ 1403&;&;HDU 1015 Safecracker【暴力】
- Free Pascal初次体验(有亮点哦)
- .NET MongoDB Driver 2.2使用示例
- 设置Sql server用户对表、视图、存储过程、架构的增删改查权限
- <;input type=";text";>;和<;textarea>;的区别
- Android-第一天
- Java之IO流学习总结【下】
- mysql主从同步(4)-Slave延迟状态监控
- 【Java框架型项目从入门到装逼】第十二节 项目分层