繁体   English   中英

Wso2 Identity Server Adaptive Authentication with Federation

[英]Wso2 Identity Server Adaptive Authentication with Federation

我们正在使用 Microsoft Azure 实施 MFA。 我们运行 wso2 身份服务器 5.10.4。

我希望看到发生的情况是,当用户登录时,如果他们具有某些 memberOf AD 角色,就会发生联合。 如果没有,它只使用基本的身份验证/正常登录。

我一直在使用自适应身份验证自定义脚本来解决这个问题。 在服务提供商上,我创建了两个登录步骤。 第 1 步是基本身份验证。 第 2 步是我们的 MS 联合身份验证器。

var arrayOfRoles = ["employee","student"];
var onLoginRequest = function(context) {
    executeStep(1, {
        onSuccess: function (context) {
            // Extracting authenticated subject from the first step
            var memberOfClaim = 'http://wso2.org/claims/employeeType';
            var user = context.currentKnownSubject;
            var roles = context.currentKnownSubject.localClaims[memberOfClaim];
            foundRole = '-1';
            var arrayOfRolesLen = arrayOfRoles.length;
            for (var i = 0; i < arrayOfRolesLen; i++) {
                searchRole = roles.indexOf(arrayOfRoles[i]);
                if (searchRole >= 0) {
                    foundRole = searchRole;
                }
            }
            if (foundRole >= 0 ) {
                Log.info(user.username + ' found a role, indexof=' + foundRole);
                // Step 2 is MFA
                executeStep(2);
            }
        }
    });
}; 

该脚本正确地找到了此人的 AD memberOf 值,并且我可以使用此脚本执行第 2 步。 问题是一个人登录一次 wso2,然后如果角色匹配并调用了 executeStep(2),则会提示他们另一个登录屏幕 wso2。

当某人符合第 2 步的条件时,如何防止再次登录? 或者,对于何时使用 basicauth 进行身份验证以及何时使用联合身份验证做出基于角色的决策,这是错误的方法吗?

您可以尝试使用hasRole()identifier First ”登录来实现您的流程。

IE

  • 步骤 1 = 标识符
  • 步骤 2 = 基本
  • 步骤 3 = Azure

让我解释一下您使用脚本在此处编写的内容。 所以你有两个身份验证步骤。

  1. 基本身份验证(用户名和密码)
  2. 联合 IDP (Azure)

如果您尚未启用自适应脚本,则在基本身份验证步骤(步骤 1)之后,用户需要针对 FIDP 进行身份验证(步骤 2)。

根据您编写的当前脚本,所有用户都将有一个用户名和密码验证步骤(步骤1)。 该步骤成功后,如果用户具有特定的一组角色,则将启用 FIDP 身份验证(步骤 2)。

现在考虑具有这些指定角色的用户。 当该用户登录时,首先用户将看到用户名密码登录页面。 之后,如果用户在 Azure 中没有活动的 session,用户将看到 azure 登录页面(如果启用了 SSO,用户可能看不到第二个屏幕)。 所以预计会看到两个登录屏幕。

所以你在这里做的是正确的,但是用户体验有点奇怪。 这里解释了一个类似的场景。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM