2015-11-03 60 views
2

首先,我是ADFS主題的新手。目標是爲SPA Web應用程序提供單點登錄OAuth2身份驗證。請求域內ADFS的令牌和聲明

我們有兩個分別在兩個不同域(A,B)上運行的內部ADFS服務器(稱爲Server-A和Server-B)。 現在用戶可以來自任何域(A,B),他們可以登錄到我的應用程序。

這兩個ADFS服務器相互信任,並且Server-B的ADFS已作爲Claim Provider信任添加到Server的A的ADFS上,並且Server-A的ADFS已添加到Server-B的ADFS上作爲依賴方信任。 我的應用程序端點是Server-A的ADFS,而我的應用程序位於Server-A內部的IIS上。

現在當域A的任何用戶試圖登錄我的應用程序,那時候我得到了「access_token」和「Claims」兩者。

問題:當域B的任何用戶試圖登錄到時候,提示以下錯誤消息越來越 -

Error message while user of domain B trying to login.

Basically in this image step #7 getting failed.

我使用JavaScript代碼下面讓代碼和令牌

下面的代碼讓「作者化代碼」

function getAuthorizationCode() {
var _url = _adfs_server + "/adfs/oauth2/authorize?response_type=code&client_id=" + _client_id + "&redirect_uri=" + _redirect_url + "&resource=" + _resource;
window.location.href = _url; }

上面的代碼片斷 - 我收到‘’從‘重定向的URL’查詢字符串授權碼。而在這之後我打電話下面的代碼來獲得訪問令牌

function getAccessToken(code) { var redirect = decodeURIComponent(_redirect_url); var _data = { 'grant_type': 'authorization_code', 'client_id': _client_id, 'redirect_uri': redirect, 'code': code } $.ajax({ type: "POST", url: _adfs_server + "/adfs/oauth2/token", crossDomain: true, data: _data, success: function (response) { _token = 'Bearer ' + response.access_token; callWebAPI(); } }); }

於是兩個ADFS服務器之間的配置缺失或一些其他步驟需要做什麼?

回答

1

您使用的是什麼版本的ADFS?

您可以談論OAuth,但只能在Server 2012 R2(ADFS v3.0)上使用。即便如此,它的功能有限。

上面提到的CP/RP信任是用於WS-fed的。他們是OAuth的N/A。

此外,OAuth使用JSON令牌而非SAML令牌。

+0

我正在使用Window Server 2012 R2和ADFS 3.0。 – Sourin

+0

但是我正在從ADFS服務器A獲取令牌和聲明。只有當域B的用戶嘗試登錄那個時候出現「發生了一些錯誤」的錯誤 - 位於上面的附件中。 – Sourin