首先,我是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的任何用户尝试登录时,得到以下错误消息 -
我使用下面的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服务器之间的配置是否缺失或者其他一些步骤需要做什么?