【问题标题】:ADFS openid-connect from web application without OWIN来自没有 OWIN 的 Web 应用程序的 ADFS openid-connect
【发布时间】:2017-12-29 10:02:20
【问题描述】:

我有一个现有的 Web 应用程序,它具有定制的身份验证和登录模块。我想通过 ADFS openid-connect 为某些用户添加登录名,但我看到的所有示例都基于我无法使用的 OWIN。 我的计划是让一些外部用户通过 Azure AD 登录,一旦他们在 Azure 中通过身份验证,我将在 Web 应用程序中创建临时用户。

我可以使用 ADAL 框架,还是必须通过使用 .Net HTTPClient 来自定义与 Azure AD 的所有通信?

谢谢。

【问题讨论】:

  • 您现有的 Web 应用程序是基于什么构建的? ASP.NET MVC?您可能不能使用 HttpClient,因为大多数授权流程都涉及最终用户浏览器的重定向。
  • 它是 ASP.NET MVC。到目前为止,我所做的是将用户重定向到登录页面,然后连同 idtoken 一起重定向回 Web 应用程序。我还可以使用 JwtSecurityTokenHandler 验证 idtoken。但是我想知道这是要走的路,还是我可以使用任何框架。我还应该提到我使用的是 ADFS,而不是 AzureAD。
  • 您使用的是哪个流程?如果要从 ADFS 的 userinfo 端点查询用户声明,则需要访问令牌。有时 ID 令牌已经包含声明。如果您已经拥有一个 ID 令牌并对其进行了验证,那么您已经靠自己走了很远。 ID 令牌将至少包含用户 ID(“sub”),因此这可能足以创建本地登录。顺便说一句:显然你可以在 MVC4 旁边使用 OWIN,所以你可以只使用 owin 库:cloudidentity.com/blog/2014/07/28/…
  • 更新:根据规范,如果您尚未请求访问令牌,则您的声明应已包含在 ID 令牌中:The Claims requested by the profile, email, address, and phone scope values are returned from the UserInfo Endpoint, as described in Section 5.3.2, when a response_type value is used that results in an Access Token being issued. However, when no Access Token is issued (which is the case for the response_type value id_token), the resulting Claims are returned in the ID Token.
  • 您好,我可以看到,当我请求一个 idtoken 时,声明是在 JWT 令牌中返回的。到目前为止我构建的解决方案是基于我的自定义代码,是否可以在不使用 OWIN 的情况下使用任何框架(例如 ADAL)与 ADFS 进行通信?

标签: asp.net adfs openid-connect


【解决方案1】:

我们实施了一个解决方案,重定向到 Azure AD 登录页面,然后将 URL 返回到站点并检查令牌的有效性。

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2019-10-13
    • 1970-01-01
    • 2017-12-11
    • 2018-05-08
    相关资源
    最近更新 更多