愿君学长松,慎勿作桃李。这篇文章主要讲述如何给运行在 SAP BTP 上的 Java 微服务增添访问控制功能相关的知识,希望能为你提供帮助。
使用 App Router 进行身份验证后,您的 java 后端服务仍然在 Web 中完全可见且不受保护。 因此,您还需要保护您的 Java 微服务,以便它们仅接受当前用户具有有效 JWT 的请求。 此外,您将以处理授权的方式设置微服务,即理解我们之前使用 xs-security.json 文件配置的 JWT 的 OAuth 范围。
在下文中,您将使用 SAP CP Spring XSUAA 安全库的安全功能来保护微服务。
在您的应用程序 pom.xml 中,确保存在以下依赖项:
< dependency>
< groupId> com.sap.cloud.security.xsuaa< /groupId>
< artifactId> xsuaa-spring-boot-starter< /artifactId>
< /dependency>
这为 Spring 提供了 XSUAA 库的必要功能。在设置 SecurityConfiguration 时利用它们:
@Configuration
@EnableWebSecurity(debug = true) // TODO "debug" may include sensitive information. Do not use in a production system!
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
XsuaaServiceConfiguration xsuaaServiceConfiguration;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS) // session is created by approuter
.and()
.authorizeRequests()
.antMatchers("/*").authenticated()
.antMatchers("/*").hasAuthority("Display")
.anyRequest().denyAll()
.and()
.oauth2ResourceServer()
.jwt()
.jwtAuthenticationConverter(getJwtAuthenticationConverter());
}
/**
* Customizes how GrantedAuthority are derived from a Jwt
*/
Converter< Jwt, AbstractAuthenticationToken> getJwtAuthenticationConverter() {
return new TokenAuthenticationConverter(xsuaaServiceConfiguration).setLocalScopeAsAuthorities(true);
}
}
以上将需要通过 JWT 对您服务的所有端点进行身份验证。此外,所有 JWT 都需要包含显示范围。
如果您现在调用应用程序的 /businesspartners 端点,您将看到 401 Unauthorized 状态代码,因为您未获得 App Router 的授权。 另一方面,通过您的应用路由器调用 /businesspartners 端点会给您一个 403 Forbidden 状态代码,这意味着您没有必要的授权来查看此页面。 这是意料之中的,因为您使用上面的注释保护了端点,而没有将请求的角色 Display 分配给您的用户。
要重新获得对受保护端点的访问权限,您需要分配 Display OAuth 范围。这是使用 SAP BTP Cockpit 完成的。
首先,转到您在 Cloud Foundry 上的帐户,然后在安全模块下找到角色集合菜单。
其次,创建一个新的角色集合,您可以为其指定任意名称。 例如,Business Partner Manager.
文章图片
然后,选择角色集合业务合作伙伴经理,选择编辑,然后添加一个新角色。从菜单中,选择您的应用程序以及相应的角色模板和角色。通过添加新创建的角色并保存业务合作伙伴经理角色集合来完成该过程。
文章图片
之后,必须将用户分配给新创建的 Business Partner Manager 才能接收显示范围。 为此,请从安全菜单中选择信任配置,然后从列表中选择默认身份提供者。
在打开的对话框中,在用户字段中输入您的用户 ID 作为电子邮件,然后单击显示分配,然后单击添加分配。
从菜单中选择 Business Partner Manager 以将其分配给您的用户。
文章图片
之后,您将显示 OAuth 范围分配给您的用户,这允许您再次访问受保护的端点。
重新部署后,将不再可能直接访问您的后端服务并导致以下消息:
文章图片
但仍然可以通过 app router 访问:
文章图片
【如何给运行在 SAP BTP 上的 Java 微服务增添访问控制功能】更多Jerry的原创文章,尽在:"汪子熙":
文章图片
推荐阅读
- [C语言] 栈内存存储方式
- NAT(网络地址转换)理论及配置命令
- # 聊一聊悟空编辑器 # 51CTO之悟空编辑器初体验(一个有自己名字的编辑器)
- Element-ui中 表单(Form)校验的几种形式 及 表单嵌套表格含上传(Upload)组件的
- #聊一聊悟空编辑器# 51CTO博客悟空编辑器体验
- redis | 一NoSql演进史
- 更好的 java 重试框架 sisyphus 配置的 2 种方式介绍
- Office365混合部署进阶系列教程四(ADFS联合身份认证)
- 动态路由