【问题标题】:OAuth2 Proxy unable to process value returned from ADFSOAuth2 代理无法处理从 ADFS 返回的值
【发布时间】:2021-10-27 21:20:17
【问题描述】:

我曾尝试使用 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 代理获得预期的答案?

【问题讨论】:

    标签: adfs oauth2-proxy


    【解决方案1】:

    这看起来你正在使用authorisation code grant flow

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

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

    【讨论】:

    • 我查看了 OAuth2 代理文档和应用程序组的属性,但我没有看到指定要在任一端使用的流程的方法。您指定的链接在两个流的 ADFS (https://*adfs_server*/adfs/oauth2/authorize) 中显示了相同的端点;改变端点是我能想到的唯一区别。
    • 好的,我发现我可能为应用程序组使用了错误的“模板”。没有一个选择真正符合用例(OAuth2 代理代表 Web 应用程序作为 ADFS 的中介)。我应该使用哪个模板?
    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2011-05-08
    • 2013-09-30
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多