首页 文章

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

提问于
浏览
2

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

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

这两个ADFS服务器相互信任,Server-B的ADFS已添加到Server-A的ADFS上作为Claim Provider信任,Server-A的ADFS已作为依赖方信任添加到Server-B的ADFS上 . 我的应用程序 endpoints 是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 回答

  • 1

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

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

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

    OAuth也使用JSON令牌而不是SAML令牌 .

相关问题