【发布时间】: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