OAuth 2.0 是行业标准的授权协议。 OAuth 2.0 专注于客户端开发人员的简单性,同时为 Web 应用程序、桌面应用程序、移动电话和客厅设备提供特定的授权流程。该规范及其扩展正在 IETF OAuth 工作组内开发。
OAuth2 也就是类似于上面的公安局,掌握标准。它 不是一个API或者服务,而是一个验证授权(Authorization)的开放标准,所有人都有基于这个标准实现自己的OAuth。
1、授权码模式(authorization code):通过客户端的后台服务器,向服务端认证。
2、简化模式(implicit):在redirect_url中传递access_token,oauth客户端运行在浏览器中。
3、密码模式(resource owner password credentials):将用户名和密码传过去,直接获取access_token。
4、客户端模式(client credentials):用户使用客户端注册,然后客户端以自己的名义向“服务端”获取资源。
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
访问报错,
看了很久代码没找到问题,正常访问的链接会重新请求到 /token/login 接口,但是错误的请求就不会有请求响应的headerHost
从下面的图片中可以看到,正常的访问是会返回一个重新访问的地址,而错误的什么也没有。
然后我猜测,这个架构或者OAuth默认开启了open这个可以访问client_id,没找到具体得指定代码。
最后我把client_id,换成自己得IP之后就可以成功了。
现在还有疑问是这个架构做了特殊处理还是OAuth的默认值?个人感觉是这个架构特殊处理的。
补充:生成token详解
https://www.yuque.com/buvzog/coiqty/mf56io