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

Spring Security SAML扩展和@PreAuthorize

容柏
2023-03-14

我的要求是使用基于SAML的SSO。从SAML断言中检索用户组并保护其余apiendpoint。我正在使用Spring SecuritySAML扩展和Spring MVC。我采取的步骤是。

    < li >使用Spring SAML扩展为SP配置应用程序。[完成] < li >检索断言并分配角色[完成] < li >创建restendpoint。[完成] < li >基于角色保护restendpoint和服务。[不工作]

我已经实现了 SAMLUserDetailsService,它返回一个带有权限的 UserDetails 对象。下面的“loadUserBySAML”。

@Override
public Object loadUserBySAML(SAMLCredential credential) throws UsernameNotFoundException {

    final String userId = credential.getNameID().getValue();

    final String emailAddress = credential.getAttributeAsString("EmailAddress");
    final String firstName = credential.getAttributeAsString("FirstName");
    final String lastName = credential.getAttributeAsString("LastName");

    List<GrantedAuthority> authorities = new ArrayList<>();
    authorities.add(new SimpleGrantedAuthority("ROLE_STUDENT"));

    return new User(userId, emailAddress, firstName, lastName, authorities);
}

我已经添加了

在RestController和我使用@PreAuthorize的服务上,但此注释似乎根本没有效果。

@PreAuthorize("hasRole('ROLE_PROGRAMLEAD')")
@RequestMapping(method = RequestMethod.GET)
public String hello() {
    return "Hello.";}

有人能帮我理解一下为什么预授权没有启动吗?我遗漏了一些配置吗?


共有2个答案

刘子实
2023-03-14

<代码>

参考:http://docs . spring . io/spring-security/site/FAQ/FAQ . html # FAQ-method-security-in-we B- context

梁兴文
2023-03-14

我面临着同样的问题。我想通过SAML身份验证执行API授权。要使其工作,您需要使用带有注释的hasAuthory参数而不是hasRole参数。以下对我有用:

@PreAuthorize(value="hasAuthority('Admin')")
 类似资料:
  • 在Seafile系统上文件被分割成数据块,这意味着在你的Seafile服务器上存储的并不是完整的文件而是数据块。这种设计能够方便有效的运用数据去重技术。 然而,有时系统管理员想要直接访问服务器上的文件,你可以使用seaf-fuse来做到这点。 Seaf-fuse是一种FUSE虚拟文件系统的实现. 一句话来说就是,它挂载所有的Seafile文件到一个目录(它被称为’’’挂载点’’’),所以你可以像访

  • Seafile WebDAV Server(SeafDAV)在Seafile Server 2.1.0版本中被加入. 在下面的维基中, 我们假设你将Seafile安装到/data/haiwen目录下。 SeafDAV配置 SeafDAV配置文件是/data/haiwen/conf/seafdav.conf. 如果它还没有被创建,你可以自行创建它。 [WEBDAV]   # 默认值是false。改为

  • 问题内容: 我正在开发带有 Today Extension 的iPhone应用 程序 。该应用程序具有一个Model模块,可从加载/保存到。由于我希望主应用程序和扩展程序都可以使用此信息,因此我使用了一个应用程序组: 应用程序和扩展程序都可以毫无问题地访问信息。 主应用有时可能会创建本地通知以呈现给用户。该通知有两个与之关联的动作()。这些操作之一触发一些代码在主应用程序的后台运行。该代码将更改信

  • Seafile WebDAV和FUSE扩展使得Seafile能够很容易的与第三方应用协调工作。例如,你可以在IOS上通过WebDAV接口访问Seafile上的文件。

  • 这里是优化 HTML5 Boilerplate 主题的一些建议。因为并不是所有的特性都适合具体的需求,所以我们没有默认导入这些特性。 App Stores 安装 Chrome 插件 用户可以直接从网站安装 Chrome 应用,前提是该应用已经通过谷歌的网络管理工具接驳了网站。更多信息详见内置 Chrome 商店的开发文档。 <link rel="chrome-webstore-item" href

  • 协议和扩展 你可以扩展一个已经存在的类型来采纳和遵循一个新协议, 就算是你无法访问现有类型的源代码也行. 扩展可以添加新的属性、方法和下标到已经存在的类型, 并且因此允许你添加协议需要的任何需要. protocol TextRepresentable { var textualDescription: String { get } } // 此处并无Dice这个类, 以及其sides属性