【问题标题】:Authenticate Web UI using OAuth2 Access Token from ADFS使用 ADFS 中的 OAuth2 访问令牌对 Web UI 进行身份验证
【发布时间】:2017-06-28 04:44:43
【问题描述】:

在 Ionic 移动应用程序中,我们需要访问 Web API以在 Ionic WebView(本质上是应用程序内的浏览器)中显示 Web UI(均为 SharePoint)。我们在 Windows Server 2012 和 OnPrem SharePoint 2013 上使用 OnPrem ADFS。我们的工作如下:

1.在 ADFS3 中,Setup OAuth2 并添加依赖方信任和客户端

http://www.gi-architects.co.uk/2016/04/setup-oauth2-on-adfs-3-0/

2。从移动应用程序调用 ADFS 以获取 OAuth 访问令牌

首先,获取:

https://myadfsdomain/adfs/oauth/authorize
    ?response_type=code
    &client_id=MYCLIENTID
    &redirect_uri=https://myserver/callback
    &resource=MYRelyingPartyId

然后发布 responseCode 例如:

$http({method: "post", 
   headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
   url: "https://myadfsdomain/adfs/oauth2/token", 
   data: "client_id=MYCLIENTID&code=" + responseCode + "&redirect_uri=https://myserver/callback&grant_type=authorization_code"  })

另见http://blog.scottlogic.com/2015/03/09/OAUTH2-Authentication-with-ADFS-3.0.html

我们现在有一个 OAuth2 访问令牌。

3.使用该令牌调用 SharePoint API

GET /the-api-method
 Host: example.com
 Authorization: Bearer <access_token>

问题

问题是,该访问令牌如何用于访问 Web UI?是否可以将其交换为 SharePoint Web UI cookie (FedAuth?),以便放置在应用程序中的 WebView 可以向经过身份验证的用户显示 SharePoint 网页,而无需用户再次登录?

根据this post,听起来像 ADFS3 (Windows Server 2012) 的 OAuth2 仅在调用 Web API 时有效,而不是在调用 Web UI 时。对吗?

作为 Windows Server 2016 now supports more OAuth2 grant types 上的 ADFS,现在是否可以在服务器 2016 中将 ADFS OAuth 用于 Web UI?如果是这样,访问令牌是如何被交换为 cookie 的?

【问题讨论】:

  • Daniel Flippance 你让这个工作了吗? “问题是,该访问令牌如何用于访问 Web UI?它可以交换为 SharePoint Web UI cookie(FedAuth?),以便放置在应用程序中的 WebView 可以向经过身份验证的用户显示 SharePoint 网页,而无需用户必须再次登录?”
  • @Ianakin,在我们的例子中,由于 Ionic 的设计方式,Web UI 和 Web API 最终使用了相同的 cookie,因此我们可以在不需要的情况下同时显示 UI 和调用 API使用 OAuth。

标签: cookies sharepoint ionic-framework oauth adfs


【解决方案1】:

是 - ADFS 3.0 仅处理机密客户端(即 Web API)的授权代码授予。

在 ADFS 4.0 中,您支持 OpenID Connect。这将打开网站场景。这会为您提供一个令牌,然后您可以使用它来访问 Web API。

看看Calling a web API in a web app using Azure AD and OpenID Connect。这里使用 Azure AD,但原理是一样的。

【讨论】:

  • 该示例正在执行与我的场景不同的操作 - AFAICT,示例中的 Web 应用程序使用来自 Web 服务器的 OAuth 和 OpenID 对 AD 进行身份验证,然后以典型方式发出它自己的 cookie。就我而言,身份验证是在移动应用程序中完成的,然后我需要将 access_token 传递给 Web 服务器以获取 cookie。正在研究 OWIN 看看它是否对此有帮助...
猜你喜欢
  • 2014-02-11
  • 2023-03-20
  • 1970-01-01
  • 2017-07-04
  • 2018-11-14
  • 2017-09-24
  • 1970-01-01
  • 2017-04-11
  • 2016-12-17
相关资源
最近更新 更多