wso2 身份服务器 5.10.1 - 基于角色的自适应用户身份验证 var hasRole 始终为 false
wso2 indentity server 5.10.1 - role-based adaptive user authentication var hasRole is always false
我们将 WSO2 5.10.1 用于 SSO,我正在尝试让自适应 MFA 正常工作,但遇到了一些问题。基于 IP 的自适应身份验证模板有效,但出于某种原因,基于角色的模板无效。出于某种原因,变量 hasRole
总是 returns false
,即使我的测试用户是名为 staff2
的内部角色的成员。 staff2 是仅包含测试用户的内部角色。
带有信息的wso2carbon.log
如下。我还包含了我正在使用的脚本,这是默认的基于角色的模板加上我为在日志中获取更多信息所做的一些修改。
日志:
TID: [-1234] [] [2021-02-02 10:14:34,684] [badcbf3d-288c-4d3a-8abc-372763d87e0b] INFO {org.wso2.carbon.identity.application.authentication.framework.config.model.graph.js.JsLogger} - Working so far
TID: [-1234] [] [2021-02-02 10:14:34,684] [badcbf3d-288c-4d3a-8abc-372763d87e0b] INFO {org.wso2.carbon.identity.application.authentication.framework.config.model.graph.js.JsLogger} - false string info
TID: [-1234] [] [2021-02-02 10:14:34,684] [badcbf3d-288c-4d3a-8abc-372763d87e0b] INFO {org.wso2.carbon.identity.application.authentication.framework.config.model.graph.js.JsLogger} - <testuser> Has one of Roles: [staff2]
我的代码:
// Role-Based from Template...
// This script will step up authentication for any user belonging
// to one of the given roles
// If the user has any of the below roles, authentication will be stepped up
var rolesToStepUp = ['staff2'];
var onLoginRequest = function(context) {
executeStep(1, {
onSuccess: function (context) {
// Extracting authenticated subject from the first step
var user = context.currentKnownSubject;
// Checking if the user is assigned to one of the given roles
var hasRole = hasAnyOfTheRoles(user, rolesToStepUp);
Log.info('Working so far');
Log.info(hasRole + ' string info');
if (5 > 1) {
Log.info(user.username + ' Has one of Roles: ' + rolesToStepUp.toString());
executeStep(2);
}
}
});
};
// End of Role-Based.......
如下更改您的 rolesToStepUp
变量并尝试。
var rolesToStepUp = ['Internal/staff2'];
如果您将变量用作 var rolesToStepUp = ['staff2'];
,它会检查用户是否在 PRIMARY 用户存储中具有名为 'staff2' 的角色。例如,如果您通过选择域 - PRIMARY 和角色名称 - staff2 创建角色,则分配到该角色的用户将能够根据您的脚本完成 2 个步骤。
如果要使用附加到 PRIMARY userstore 的角色以外的角色,则需要在 var rolesToStepUp
数组中定义域。
由于您创建了内部角色,因此 var rolesToStepUp
应定义为 var rolesToStepUp = ['Internal/staff2'];
我们将 WSO2 5.10.1 用于 SSO,我正在尝试让自适应 MFA 正常工作,但遇到了一些问题。基于 IP 的自适应身份验证模板有效,但出于某种原因,基于角色的模板无效。出于某种原因,变量 hasRole
总是 returns false
,即使我的测试用户是名为 staff2
的内部角色的成员。 staff2 是仅包含测试用户的内部角色。
带有信息的wso2carbon.log
如下。我还包含了我正在使用的脚本,这是默认的基于角色的模板加上我为在日志中获取更多信息所做的一些修改。
日志:
TID: [-1234] [] [2021-02-02 10:14:34,684] [badcbf3d-288c-4d3a-8abc-372763d87e0b] INFO {org.wso2.carbon.identity.application.authentication.framework.config.model.graph.js.JsLogger} - Working so far
TID: [-1234] [] [2021-02-02 10:14:34,684] [badcbf3d-288c-4d3a-8abc-372763d87e0b] INFO {org.wso2.carbon.identity.application.authentication.framework.config.model.graph.js.JsLogger} - false string info
TID: [-1234] [] [2021-02-02 10:14:34,684] [badcbf3d-288c-4d3a-8abc-372763d87e0b] INFO {org.wso2.carbon.identity.application.authentication.framework.config.model.graph.js.JsLogger} - <testuser> Has one of Roles: [staff2]
我的代码:
// Role-Based from Template...
// This script will step up authentication for any user belonging
// to one of the given roles
// If the user has any of the below roles, authentication will be stepped up
var rolesToStepUp = ['staff2'];
var onLoginRequest = function(context) {
executeStep(1, {
onSuccess: function (context) {
// Extracting authenticated subject from the first step
var user = context.currentKnownSubject;
// Checking if the user is assigned to one of the given roles
var hasRole = hasAnyOfTheRoles(user, rolesToStepUp);
Log.info('Working so far');
Log.info(hasRole + ' string info');
if (5 > 1) {
Log.info(user.username + ' Has one of Roles: ' + rolesToStepUp.toString());
executeStep(2);
}
}
});
};
// End of Role-Based.......
如下更改您的 rolesToStepUp
变量并尝试。
var rolesToStepUp = ['Internal/staff2'];
如果您将变量用作 var rolesToStepUp = ['staff2'];
,它会检查用户是否在 PRIMARY 用户存储中具有名为 'staff2' 的角色。例如,如果您通过选择域 - PRIMARY 和角色名称 - staff2 创建角色,则分配到该角色的用户将能够根据您的脚本完成 2 个步骤。
如果要使用附加到 PRIMARY userstore 的角色以外的角色,则需要在 var rolesToStepUp
数组中定义域。
由于您创建了内部角色,因此 var rolesToStepUp
应定义为 var rolesToStepUp = ['Internal/staff2'];