首先,我是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服务器之间的任何配置或需要执行其他一些步骤?
答案 0 :(得分:1)
您使用的是什么版本的ADFS?
您谈论的是OAuth,但这仅适用于Server 2012 R2(ADFS v3.0)。即便如此,它的功能也有限。
上面提到的CP / RP信任是用于WS-fed的。他们是OAuth的N / A.
OAuth也使用JSON令牌而非SAML令牌。