使用ADFS中的OAuth2访问令牌验证Web UI

时间:2017-02-09 23:55:51

标签: cookies sharepoint ionic-framework oauth adfs

在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或者它是什么?

1 个答案:

答案 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,但原理是相同的。