从域内请求来自内部ADFS的令牌和声明

时间:2015-11-03 11:09:02

标签: adfs

首先,我是ADFS主题的新手。目标是为SPA Web应用程序进行单点登录OAuth2身份验证。

我们有两个内部ADFS服务器(称为Server-A和Server-B),它们分别在两个不同的域上运行(A,B)。 现在用户可以来自任何域(A,B),他们可以登录我的应用程序。

这两个ADFS服务器相互信任,并且Server-A的ADFS已添加到Server-A的ADFS上作为声明提供程序信任,并且Server-A的ADFS已作为依赖方信任添加到Server-B的ADFS上。 我的应用程序端点是Server-A的ADFS,我的应用程序托管在Server-A内的IIS上。

现在,当域A的任何用户尝试登录我的应用程序时,我正在获取" access_token"和"索赔"都。

  

问题:当域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; }

以上代码段 - 我正在获取"授权码"来自"重定向的网址"请求参数。之后我在代码下面调用以获取访问令牌

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 个答案:

答案 0 :(得分:1)

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

您谈论的是OAuth,但这仅适用于Server 2012 R2(ADFS v3.0)。即便如此,它的功能也有限。

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

OAuth也使用JSON令牌而非SAML令牌。