在Ionic移动应用中,我们需要访问网络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访问令牌
首先,GETing:
https://myadfsdomain/adfs/oauth/authorize
?response_type=code
&client_id=MYCLIENTID
&redirect_uri=https://myserver/callback
&resource=MYRelyingPartyId
然后POSTing 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,听起来ADSO3(Windows Server 2012)的OAuth2仅在调用Web API时有效,而不是在调用Web UI时。这是对的吗?
作为Windows Server 2016上的ADFS now supports more OAuth2 grant types,现在是否可以在服务器2016中使用ADFS OAuth作为Web UI?如果是这样,访问令牌如何交换cookie或者它是什么?
答案 0 :(得分:0)
是 - 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,但原理是相同的。