鉴权通过后回调,重定向的设置的自定义参数丢掉了

问题描述

重定向地址:
https://xxx.authing.cn/login?app_id=x&client_id=x&redirect_uri=https%3A%2F%2F10.10.10.10%2Fmanager%2Ftp%2Fsso%2Flogin%3FpartyId%3D5bb060b549844a228fd3ef6258a7e2ef&response_type=code&scope=authorization_code&state=8119b58a396440729f16e45a7a22b9fb

partyId和state均是自定义参数,鉴权通过后的回调信息partyId丢掉了,为啥?

https://10.10.10.10/manager/tp/sso/login?code=xx&state=8119b58a396440729f16e45a7a22b9fb

稍等,这边查一下。方便的话贴一下你的使用代码。

不太方便贴代码。就是 redirect_uri 没有原样返回。感觉很奇怪,业务上需要这些自定义参数去做逻辑操作

你好,需要通过 state 在认证过程中联系上下文

其他平台这么玩可以,看来是你们处理上比较特殊了

如果你用的是 Guard 的跳转模式,可以将自定义参数放到 state 中:

然后在 callback 中获取 url 中的参数:

哈哈,尴尬,直接浏览器上试一下都不行

https://kevpvu3s77rn.authing.cn/login?app_id=64225fd551b0ebdd5afeb80d&client_id=64225fd551b0ebdd5afeb80d&redirect_uri=https%3A%2F%2F127.0.0.1%2Fmanager%2Ftp%2Fsso%2Flogin&response_type=code&scope=authorization_code&state=8119b58a396440729f16e45a7a22b9fb&partyId=5bb060b549844a228fd3ef6258a7e2ef

partyId 没有丢哈:

;(function () {

const url = 'https://kevpvu3s77rn.authing.cn/login?app_id=64225fd551b0ebdd5afeb80d&client_id=64225fd551b0ebdd5afeb80d&redirect_uri=https%3A%2F%2F127.0.0.1%2Fmanager%2Ftp%2Fsso%2Flogin&response_type=code&scope=authorization_code&state=8119b58a396440729f16e45a7a22b9fb&partyId=5bb060b549844a228fd3ef6258a7e2ef 1'

const decodedUrl = decodeURIComponent(url)

const queryString = decodedUrl.split('?')[1]

const params = {}
    
queryString.split('&').forEach(item => {
    const [key, value] = item.split('=')
    params[key] = value
})

console.log(params)

})();

你针对这串url做解析做啥,你浏览器访问这个去做鉴权。

https://kevpvu3s77rn.authing.cn/login?app_id=64225fd551b0ebdd5afeb80d&client_id=64225fd551b0ebdd5afeb80d&redirect_uri=https%3A%2F%2F127.0.0.1%2Fmanager%2Ftp%2Fsso%2Flogin&response_type=code&scope=authorization_code&state=8119b58a396440729f16e45a7a22b9fb&partyId=5bb060b549844a228fd3ef6258a7e2ef

回调回来的url里面是没有partyid的

你用的是哪个 SDK 或什么方法?伪代码贴一下。

oidc 协议应该是能支持你要的功能的,参考该端点进行初始化
https://test144.authing.cn/oidc/auth?client_id=63f8847fde81ad05043fd0c7&redirect_uri=https%3A%2F%2F127.0.0.1%2Fmanager%2Ftp%2Fsso%2Flogin%3FpartyId%3D5bb060b549844a228fd3ef6258a7e2ef&response_type=code&scope=authorization_code&state=8119b58a396440729f16e45a7a22b9fb

大佬,这个不用代码吧。

  1. 构造了一个地址发302重定向往 authing 鉴权,重定向url包含我的自定义参数
  2. 用户鉴权通过,发起回调到我这边
  3. 回调后能拿到 code state,按道理应该还有自定义参数,但是没获取到

浏览器直接访问下重定向url就行了吧

要oauth saml cas,就是不需要oidc的,怎么处理起来还不一样。能对接起来这单生意就成了呀,哈哈哈哈

设计的时候咋想的,不支持自定义参数回调,我放到state参数里面再拿出来解析也很挫啊

:sweat_smile: 问题还是没得到解决,有好心人帮看看吗?

OIDC 的授权流程与 OAuth 2.0 一样并且完全兼容的,无需修改代码,可以按照相同方式接入。具体实践可以参考 https://mp.weixin.qq.com/s/JeClUzNVnC7hGjDwcA8Qzw