基于pig架构的OAuth2学习记录

OAuth2的例子

  • OAuth2基本概念
  • OAuth2的授权模式
  • 案例分析(基于pig架构)

首先简单聊一下第三方认证,一个 网站A向一个 网站B发送Http请求进行访问,为了确保A网站有权限访问B网站,A需要拿上B的许可证( 授权码)才可以进去。这样就有一个问题,A都访问不了B网站,怎么获取他的许可证呢?这个时候,有个第三方认证中心(类似于公安局,大家都认可他)他来保管你们这些认证信息,这样A网站就拿着自己的身份证( 账号密码:IP等唯一信息)去公安局申请去网站B的许可证( 授权码),拿到许可证就可以去B网站访问了。

OAuth2基本概念

OAuth 2.0 是行业标准的授权协议。 OAuth 2.0 专注于客户端开发人员的简单性,同时为 Web 应用程序、桌面应用程序、移动电话和客厅设备提供特定的授权流程。该规范及其扩展正在 IETF OAuth 工作组内开发。
OAuth2 也就是类似于上面的公安局,掌握标准。它 不是一个API或者服务,而是一个验证授权(Authorization)的开放标准,所有人都有基于这个标准实现自己的OAuth。

OAuth2的授权模式

1、授权码模式(authorization code):通过客户端的后台服务器,向服务端认证。
2、简化模式(implicit):在redirect_url中传递access_token,oauth客户端运行在浏览器中。
3、密码模式(resource owner password credentials):将用户名和密码传过去,直接获取access_token。
4、客户端模式(client credentials):用户使用客户端注册,然后客户端以自己的名义向“服务端”获取资源。

案例分析(基于pig架构)

https://www.yuque.com/pig4cloud/pig/osnulg
表中插入的数据,如果是open是可以实现统一认证页面的跳转。但是我换一个其他的名称(“dreamofchen”)

插入数据为:

INSERT INTO `pig`.`sys_oauth_client_details`(`client_id`, `resource_ids`, `client_secret`, `scope`, `authorized_grant_types`, `web_server_redirect_uri`, `authorities`, `access_token_validity`, `refresh_token_validity`, `additional_information`, `autoapprove`, `create_time`, `update_time`, `create_by`, `update_by`) VALUES ('dreamofchen', NULL, 'dreamofchen', 'server', 'password,app,refresh_token,authorization_code,client_credentials', 'https://pig4cloud.com', NULL, NULL, NULL, NULL, 'false', NULL, NULL, NULL, NULL);

请求地址为:

http://localhost:3000/oauth2/authorize?scope=server&client_id=dreamofchen&response_type=code&redirect_uri=https://pig4cloud.com

访问报错,
基于pig架构的OAuth2学习记录_第1张图片
看了很久代码没找到问题,正常访问的链接会重新请求到 /token/login 接口,但是错误的请求就不会有请求响应的headerHost
基于pig架构的OAuth2学习记录_第2张图片
从下面的图片中可以看到,正常的访问是会返回一个重新访问的地址,而错误的什么也没有。
基于pig架构的OAuth2学习记录_第3张图片
然后我猜测,这个架构或者OAuth默认开启了open这个可以访问client_id,没找到具体得指定代码。
最后我把client_id,换成自己得IP之后就可以成功了。

现在还有疑问是这个架构做了特殊处理还是OAuth的默认值?个人感觉是这个架构特殊处理的。

补充:生成token详解

https://www.yuque.com/buvzog/coiqty/mf56io

你可能感兴趣的:(JAVA,架构,学习,服务器)