当前位置: 首页 > 知识库问答 >
问题:

Spring Security WSO2 IS集成-了解如何分配权限/自定义wso2令牌

羊城
2023-03-14

我对这个问题有好几天很纠结。

所以我正在尝试用Spring Security框架来分配角色。我的目标是解码通过openid从WSO2 Identity Server 5.0获得的令牌,并分配角色,这样我就可以基于角色(权限)对请求进行授权

这是我在简单的Spring启动应用程序中的SecurityConfig类

@配置文件("oauth")
@配置
@EnableResourceServer
公共类SecurityConfig{

}

因此,通过这种配置,我能够解码令牌。

但是,在调试模式下,当我向简单的Spring启动应用程序id_token发出请求时,我收到了一个错误:

Java.lang.ClassCastException
java.lang.String 不能转换为 java.util.Collection

它发生在默认访问令牌转换器类中,特别是在映射对象转换为字符串 [] 角色时的代码行中

public OAuth2Authentication extractAuthentication(Map<String, ?> map) {
    ...
    if (user==null && map.containsKey(AUTHORITIES)) {
        @SuppressWarnings("unchecked")
        String[] roles = ((Collection<String>)map.get(AUTHORITIES)).toArray(new String[0]);
        authorities = AuthorityUtils.createAuthorityList(roles);
    }
    OAuth2Request request = new OAuth2Request(parameters, clientId, authorities, true, scope, resourceIds, null, null,
            null);
    return new OAuth2Authentication(request, user);
}

这是我的WSO2解码令牌

{
"auth_time": 1464819792," exp": 1464823490,< br > " azp ":" U1PXsuyV _ tdBERmZIoHHnqoGkWIa ",< br > " authorities ":"[\ " ROLE _ ADMIN \ ",\"approver\ ",\"Internal\/everyone\"]",< br > " at _ hash ":" hh2 Luz L3 BP 6 ydqyzt 4 r 6 gg ",< br > " aud ":[< br > " U1PXsuyV _ tdbermkwu

似乎Spring期望的是字符串数组,而不是字符串对象(在权威机构中值的开头和结尾有一个双引号。

澳元格式似乎是Spring所期待的。

因此,我可以考虑两个选项o<br>1.在Spring Oauth2中编写一些配置(我还没有弄清楚)<br>2.配置WSO2身份服务器(这是我一直在尝试的)。

有一些资源说,我们可以在WSO2碳中实现我们自己的JWT令牌生成器。从代码中可以看出,这似乎是在声明中生成双引号的地方。

org . WSO 2 . carbon . identity . oauth 2 . auth context . jwttokengenerator

我希望有其他人一直在经历这件事。

非常感谢你。

共有2个答案

池俊茂
2023-03-14

谢谢!那也可以工作!但是为了更容易实现,我们使用5.2.0 beta版本,该版本会产生字符串数组。T

景嘉实
2023-03-14

请在此处找到默认实现[1]。如果您可以使用IS 5.1.0 for 5.1参考[2],那就更好了。构建自定义JWTTokenGenerator后将其复制到存储库/组件/库。更改

<TokenGeneratorImplClass> 

元素,具体取决于您的自定义实现。

[1] https://svn.wso2.org/repos/wso2/carbon/platform/branches/turing/components/identity/org.wso2.carbon.identity.oauth/4.2.3/src/main/java/org/wso2/carbon/identity/oauth2/authcontext/JWTTokenGenerator

[2]https://github.com/wso2/carbon-identity/tree/master/components/oauth/org.wso2.carbon.identity.oauth/src/main/java/org/wso2/carbon/identity/oauth2/authcontext

 类似资料:
  • 本文向大家介绍Android权限控制之自定义权限,包括了Android权限控制之自定义权限的使用技巧和注意事项,需要的朋友参考一下 天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。 Permission App: used to define a new permission 这个作为定义权限的App,我称之为Pe

  • 从历史上看,Android自定义权限一团糟,并且依赖于安装顺序,这是众所周知的暴露漏洞。 在API 21之前,有一个令人不安的变通方法,即在您的清单中声明另一个应用程序的自定义权限,授予该权限...但是,自API21以来,只有一个应用程序可以声明自定义权限,并且将阻止安装声明相同权限的另一个应用程序。 替代方案是重新安装需要权限的应用程序,这样系统就会检测到它们,但这不是一个好的用户体验。或者在运

  • 主要内容:一、删除默认权限,二、案例:开发人员拥有读写权限,三、案例:测试人员拥有读权限给仓库下的每个目录分配权限对访问进行控制。 一、删除默认权限 删除系统安装后默认权限:   二、案例:开发人员拥有读写权限 进入权限分配界面: 添加组或用户: 分配权限: 继承父目录权限、不可访问、读权限、读/写权限 访问时输入账号: 登陆测试是否有读/写权限: 三、案例:测试人员拥有读权限 登陆测试是否有读/写权限:

  • 本文向大家介绍SpringBoot如何通过自定义注解实现权限检查详解,包括了SpringBoot如何通过自定义注解实现权限检查详解的使用技巧和注意事项,需要的朋友参考一下 前言 最近开发了一个接口,完成后准备自测时,却被拦截器拦截了,提示:(AUTH-NO)未能获得有效的请求参数!怎么会这样呢? 于是我全局搜了这个提示语,结果发现它被出现在一个Aspect类当中了,并且把一个 @interface

  • 11.6.添加自定义权限 我们曾在第六章的更新Manifest文件,获取Internet权限一节讨论过,应用程序若要访问系统的某项功能(比如连接网络、发短信、打电话、读取通讯录、拍照等等),那就必须获取相应的权限。比如现在的Yamba,就需要连接网络、监视系统启动、监视网络连接情况这三项权限。它们都在Manifest文件中<user-permission>部分给出了声明,至于能否得到这些权限,则由

  • 我尝试获取西南边界点的,将其转换为像素,将其向内移动300px,然后将其转换回以用作新的西南边界点。但这不起作用,因为计算是在变焦之前完成的,所以300px的位移最终太多了...我想写我自己的,但我遇到了同样的问题,因为它是在缩放之前完成的。