【问题标题】:Prompt for AD credentials on every OAuth2 authorize request在每个 OAuth2 授权请求上提示 AD 凭据
【发布时间】:2015-08-19 03:54:43
【问题描述】:

我们有一个具有自己身份验证的应用程序,我们最近为其添加了 OAuth2 支持。企业客户可以为其 ADFS 或 Google 域指定数据,我们使用这些数据自动注册和登录他们的用户。

现在,问题是切换凭据。当我们从应用程序中注销时,单击登录按钮(重定向到配置的 ADFS OAuth2 授权端点)将立即验证用户并将其发送回我们的应用程序,并为其当前凭据提供有效代码。

Google 端点有一个特殊的参数approval_prompt,我们可以使用它来强制执行一个中间步骤,用户可以在该步骤切换他的凭据。我认为 ADFS 没有。

我们还有哪些其他解决方案?是否可以在 ADFS 服务器上配置一些东西来提示用户为每个授权请求输入他的凭据?

【问题讨论】:

  • 你找到解决这个问题的方法了吗?我在使用 OAuth 和 ADFS 时遇到了同样的问题。根据我阅读的内容,我似乎可以将prompt=login 附加到/adfs/ls/authorize,但它似乎没有做任何事情。
  • 对我们来说,将参数 prompt=login 添加到 que URL 正在使用 OAuth2

标签: oauth-2.0 adfs3.0


【解决方案1】:

对我们来说,将参数 prompt=login 添加到 que 授权请求 URL 正在使用 OAuth2:

/adfs/oauth2/authorize?response_type=code&client_id=XXX&resource=YYY&redirect_uri=ZZZZ&prompt=login

【讨论】:

    【解决方案2】:

    据我所知,这些 url 参数的工作原理如下:

    • wa 是我们请求的操作。到目前为止,我只看到了两个值:wsignin1.0 和 wsignout1.0
    • wfresh 与缓存凭据的最大年龄有关,但我并不完全理解。 0 表示不使用缓存的凭据。
    • wtrealm 是在 ADFS 中配置的 AppID。这会告诉 ADFS 服务器哪个应用程序正在尝试进行身份验证。对我们来说,这是应用程序的基本 url。
    • wctx 是请求后从 ADFS 服务器返回到应用程序的一些特定于应用程序的数据。由于我们使用标准的 System.IdentityModel 设置,它处理解析和响应这个值,而不是我们的代码。里面编码了一个 ru 参数。这是返回网址。这就是我们返回到原来的页面的方式。
    • wct 是身份验证请求的时间戳

    【讨论】:

    • 所以...知道我可以使用什么吗? :-)
    • 这些参数用于 ws-fed 而非 oauth。
    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2011-11-26
    • 2017-05-11
    • 2019-01-13
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多