多租户的 Spring 安全性

问题描述 投票:0回答:1

我的身份验证服务器属性文件中有以下属性,用于 oauth spring security 生成 jwt 令牌。

clientcredential:
  clients:
    - tenant: tenant1
      clientdetails:
        - name : service1
          scope : service1.read
          clientId: tenant1-service1-client
          clientSecret: tenant1-service1-secret
        - name : service2
            scope : service2.read
            clientId: tenant1-service2-client
            clientSecret: tenant1-service2-secret
        - name : service3
            scope : service3.read
            clientId: tenant1-service3-client
            clientSecret: tenant1-service3-secret
        - name : service4
            scope : service4.read
            clientId: tenant1-service4-client
            clientSecret: tenant1-service4-secret
    - tenant: tenant2
      clientdetails:
        - name : service1
            scope : service1.read
            clientId: tenant2-service1-client
            clientSecret: tenant2-service1-secret
        - name : service2
            scope : service2.read
            clientId: tenant2-service2-client
            clientSecret: tenant2-service2-secret
        - name : service3
            scope : service3.read
            clientId: tenant2-service3-client
            clientSecret: tenant2-service3-secret

我想验证 jwt 令牌,以便一个租户的令牌不应与另一租户一起使用。

我的请求端点为 https://domain/api/v1/save/{tenant} 其中租户在每个请求的路径变量中传递。

我们没有任何 UI 或此类用于用户配置的配置,它只是一个 Spring Boot REST API 项目。

我们正在使用内存中客户端注册存储库来存储客户端详细信息。

java spring-boot spring-security oauth jwt
1个回答
0
投票

您应该确保将

tenant
声明放入 JWT 访问令牌中。然后验证请求时,您可以验证
tenant
声明是否等于路径参数中的
tenant

您可以将任何声明放入访问令牌中,然后使用它们做出正确的授权决策。

© www.soinside.com 2019 - 2024. All rights reserved.