1

我尝试使用 OAuth2 代理将我的 SSO 身份验证直接管理到 ADFS,而不是通过像 Keycloak 这样的中介。我首先尝试在旧版本 (7.1.x) 中使用 OIDC 提供程序,然后在全新版本 (7.2.0) 中使用 OAuth2 代理文档中指定的配置新 ADFS 提供程序(在 ADFS 上我有一个应用程序组集向上)。

在这两种情况下,我都成功连接到 ADFS,并且 ADFS 显示了一个身份验证屏幕。一切似乎都在 ADFS 端工作(我输入凭据,它接受它们并且 ADFS 登录屏幕消失)。ADFS 日志中没有错误事件。但是,OAuth2 代理在回调上失败(正确发送到 https:\ myserver \oauth2\callback。从 URL 中的 ADFS 返回的值看起来像是被格式化为 JWT,但它是垃圾(即当我粘贴它时)进入 jwt.io,它显示“无效签名”,标头为空白,有效负载完全是垃圾。)换句话说,ADFS 重定向到“https:\ myserver \oauth2\callback?code=”,其中“code”后面的值=" 无法理解。

我认为 ADFS 正在加密令牌,但似乎无法指定 ADFS 用于 OAuth2 代理的证书,文档中也没有任何迹象表明它希望我这样做。

有问题的 ADFS 来自 Server 2016,所以我假设它是 ADFS v4.0。

有什么想法吗?我错过了什么吗?一切似乎都正常,直到它从 ADFS 返回到 OAuth2 代理。


根据一个答案,我在设置 ADFS 应用程序组时可能使用了错误的模板。是否应该使用特定模板以便 OAuth2 代理获得预期的答案?

4

1 回答 1

0

这看起来像您正在使用授权代码授予流程

在此流程中,ADFS 返回带有字符串(不是 JWT)的“code=”,您必须在下一次调用中返回它。

在您的情况下,隐式流程(相同链接)可能会更好。

于 2021-10-28T21:55:48.093 回答