deployment - 如何将内部/订阅者角色设置为 WSO2 Api 管理器中所有经过身份验证的用户的默认角色?
问题描述
我正在尝试将默认角色作为内部/订阅者提供给所有用户。我在文件/_system/config/apimgt/applicationdata/tenant-conf.json 中进行了更改并添加了角色,例如内部/创建者,内部/每个人,apimrole “名称”:“apim:订阅”,“角色": "admin,Internal/creator,Internal/everyone,apimrole,Internal/subscriber" 它给了我下面的错误
org.wso2.carbon.apimgt.api.APIManagementException: Error while adding the subscriber
laxman@gmail.com@carbon.super@carbon.super
任何帮助表示赞赏
解决方案
在 WSO2 API Manager 中以两种方式创建新用户。
- 通过 API Manager 的管理控制台
- 自行注册
在第一种方式中,您可以在创建用户时分配角色。
对于自注册用户,已经存在一个处理程序,用于将内部/订阅者角色分配给具有内部/自注册角色的新用户。
分配角色:内部/订阅者给新用户或现有角色未分配用户,我们有以下两个选项:
选项1
如果您希望使用管理控制台将订阅者角色分配给未分配用户的现有角色,则可以转到此处的角色列表页面:
有一个选项:在与内部/订阅者角色相关的角色列表中的操作列中分配用户。
它将列出所有未分配内部/订阅者角色的用户,并且有几个选项可以一次选择多个用户并分配角色。
选项 2
您可以编写自定义用户操作事件侦听器并将其添加为 OSGI 包。在这种情况下,您可以参考此WSO2 IS 文档并编写一个扩展 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;
}
如果用户在添加新用户的过程中没有该角色,这将为每个新添加的用户添加内部/订阅者角色。
这里它提到了多个接口,您可以使用它们实现用户存储侦听器。
对于 OSGI 包的创建和部署过程,您可以找到这个示例 GitHub 项目。<APIM_HOME>/repository/components/dropins/
您可以按照那里提到的步骤将构建的 jar 文件复制到目录中。(由于 WSO2 API Manager 也使用 WSO2 IS 组件,您也可以按照自述文件中提到的相同步骤使用 API Manger)
您可以通过这篇博文了解有关 OSGI 捆绑的完整信息。
推荐阅读
- highcharts - 当同一页面上有多个图表时,如何使用向上钻取更新 HighCharts 标题?
- python - pytorch 模型在第一轮后返回 NAN
- html - 如何从角度 8 中的 ngfor 值获取对象计数
- macos - settings.gradle 因为它不存在
- sql - 处理许多 SQL 参数
- powershell - 每次运行 powershell 脚本时都会出现 Set-ExecutionPolicy 错误
- c# - System.Drawing 错误从字节数据保存图像
- mongodb - 在 macOS Catalina 上启动 mongod 服务
- html - 即使语法正确,CSS3 变量也不起作用
- javascript - 重新加载页面后,罢工将如何保留?