【问题标题】:how to set Internal/Subscriber role as default role to all authenticated users in WSO2 Api manager?如何将内部/订阅者角色设置为 WSO2 Api 管理器中所有经过身份验证的用户的默认角色?
【发布时间】:2021-02-10 10:50:46
【问题描述】:

我正在尝试将默认角色作为内部/订阅者提供给所有用户。 我进行了更改,我们对文件 /_system/config/apimgt/applicationdata/tenant-conf.json 进行了更改,并添加了诸如内部/创建者、内部/每个人、apimrole 之类的角色 "名称": "apim:subscribe", “角色”:“管理员、内部/创建者、内部/所有人、apimrole、内部/订阅者” 它给了我以下错误

org.wso2.carbon.apimgt.api.APIManagementException: Error while adding the subscriber 
laxman@gmail.com@carbon.super@carbon.super

任何帮助表示赞赏

【问题讨论】:

  • 您使用的 APIM 版本是什么?
  • apim 版本 3.2.0
  • 你能更具体地说明你做了什么吗?在 APIM 3.2 中,您不需要编辑 tenant-conf.json 。您可以使用管理员门户manage role permissions

标签: deployment wso2 wso2is roles wso2-appm


【解决方案1】:

在 WSO2 API 管理器中以两种方式创建新用户。

  1. 通过 API Manager 的管理控制台
  2. 自行注册

在第一种方式中,您可以在创建用户时分配角色。

对于自行注册的用户,已经存在 handler 将内部/订阅者角色分配给具有内部/自行注册角色的新用户。

要分配角色:内部/订阅者给新用户或现有角色未分配用户,我们有以下两个选项:

选项 1

如果您希望使用管理控制台将订阅者角色分配给未分配用户的现有角色,那么您可以转到那里的角色列表页面:

有一个选项:Assign Users 在与内部/订阅者角色相关的角色列表中的操作列中。

它将列出所有未分配内部/订阅者角色的用户,并且有多个选项可以一次选择多个用户并分配角色。

选项 2

您可以编写自定义用户操作事件侦听器并将其添加为 OSGI 包。 在这种情况下,您可以参考此WSO2 IS doc 并编写一个扩展 AbstractIdentityUserOperationEventListener 的事件侦听器。

这个示例代码对我有用:

public class SampleEventListener extends AbstractIdentityUserOperationEventListener {

private static final String EVENT_LISTENER_TYPE = "org.wso2.carbon.user.core.listener.UserOperationEventListener";
private static final String SUBSCRIBER_ROLE = "Internal/subscriber";

@Override
public boolean doPreAddUser(String userName, Object credential, String[] roleList, Map<String, String> claims,
                            String profile, UserStoreManager userStoreManager) throws UserStoreException {

    List<String> roles = new ArrayList<>(Arrays.asList(roleList));
    if (!roles.isEmpty() && !roles.contains(SUBSCRIBER_ROLE)) {
        userStoreManager.updateRoleListOfUser(userName, new String[]{}, new String[] { SUBSCRIBER_ROLE });
    }
    return true;
}

这将为每个新添加的用户添加内部/订阅者角色,如果用户在添加新用户的过程中没有该角色。

Here 提到了多个接口,您可以使用这些接口实现用户存储侦听器。

对于 OSGI 包的创建和部署过程,您可以找到this sample GitHub project。您可以按照那里提到的步骤将构建的 jar 文件复制到目录&lt;APIM_HOME&gt;/repository/components/dropins/。 (由于 WSO2 API Manager 也使用 WSO2 IS 组件,您可以按照README 中提到的相同步骤使用 API Manger)

您可以通过this blog post 了解有关 OSGI 捆绑的完整信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2019-10-30
    相关资源
    最近更新 更多