乐趣区

关于sap:如何给运行在-SAP-BTP-上的-Java-微服务增添访问控制功能

在浏览本文之前,请确保您曾经读过了这篇文章:[给 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 拜访:

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

退出移动版