我想实现单点登录,流程如下:
1,跳转到“认证地址”。(产品里的)
2,在认证地址登录成功。
3,认证地址回调到我自己的网站。
4,获取的参数里没有refresh_token。
为什么没有refresh_token ?
我想实现单点登录,流程如下:
1,跳转到“认证地址”。(产品里的)
2,在认证地址登录成功。
3,认证地址回调到我自己的网站。
4,获取的参数里没有refresh_token。
为什么没有refresh_token ?
您好,token 接口返回 refresh_token 字段需要 scope 参数里有 offline_access;具体参考链接如下:
https://docs.authing.cn/v2/concepts/oidc-common-questions.html#scope-参数对应的用户信息
我再梳理一下:
1,我想要实现单点登录,结果发现没有refresh_token;
2,你们说需要在scope里加上offline_access;于是可以获取到refresh_token,但是多出来一个“授权窗口”;
3,随后说是在产品里关闭“授权页”,我看了一下一直都是关闭状态。
你们可以自己测试一下,再回复我。(也可能产品设计上就这样,只是我不能理解)
若认证时需要获取到 refresh_token 则必须每次让用户确认授权, 这是 OIDC 协议规范要求。
若认证时不需要获取到 refresh_token 则默认不提示「确认授权」,可以在控制台中手动开启或关闭。
谢谢您的回复。
那么单点登录应该用什么协议?
用OIDC 协议,如果没有refresh_token,access_token就无法刷新;如果有refresh_token 就会有授权提示窗口(但这样还得让用户多点一下才行)
还有几个问题:
1,我看了OIDC 协议规范,里面只要求传入openid 就可以返回refresh_token了,为什么你们的需要传入scope=offline_access 和 prompt=consent?
2,OAuth2.0 是授权协议,授权协议里弹出“授权窗口”完全没有毛病,但是OIDC 不是认证协议嘛,为什么还要弹出“授权窗口”?
3,OIDC 协议里似乎也没有规定要弹出“授权窗口”呀?其次获取“refresh_token” 这个难道还要用户授权?(refresh_token本身是刷新access_token的,对于用户来讲不透明,用户又怎么授权?)
如果您不想弹出「授权提示窗口」,建议您直接使用 access_token 实现 SSO,Authing access_token 默认过期时间是 14 天,14 天后 access_token 过期需要用户重新登录,当然这个过期时间您可以自行在控制台中调整。
1.OIDC 协议中是有此规范的,您可参考下图
1,access_token 我想设置的短一些(为了提高安全性),然后通过refresh_token来刷新就很有必要了,然而获取refresh_token 会有弹窗。
2,用access_token 来实现SSO(单纯的access_token 不能表示是那个用户登录的吧)。
3,除了scope里加offline_access 来获取refresh_token,还有其它能获取refresh_token的方式吗?
您好,对于 refresh_token 获取问题,目前只能通过 scope 参数方式来获取
那实现我想要的那种单点登录的最佳实践是什么?
我们已经了解您的使用场景,并研究解决方案,目前部分工程师春节休假了,节后第一时间给您回复