如果我们使用带属性的范围,如何在 spring 引导中实现安全性

How to implement security in spring boot if we use scopes with attributes

我按照 here 所述使用具有属性的范围。 您知道如何在 spring 启动应用程序中实施安全配置,以实现仅提供有关范围属性的相应数据。

我认为根据您的具体要求,您可以使用两种方法来实现此结果。但是,首先,没有像 XSUAA 的参数化范围这样的东西。

  1. 可以将额外的属性建模到 XSUAA 的角色模板中,例如,Country 属性,如 xs-security.json

  "attributes": [ 
  { 
    "name" : "Country", 
    "description" : "Country parameter for the Role", 
    "valueType" : "string" 
  }],
  "role-templates": [
  {
    "name": "BusinessPartnerViewer",
    "description": "Role to view business addresses",
      "scope-references" : [
        "$XSAPPNAME.ViewAddresses"
      ],
      "attribute-references": [
        "Country"
      ]
  }

然后您需要使用 cf create-service xsuaa application <serviceinstance> -c xs-security.json 在 CloudFoundry 中重新创建您的 XSUAA 实例。注意:当您之前有其他角色模板定义时,您无法更新绑定。

基于此,应用程序的订户可以在运行时实例化角色,提供属性以及 OAuth 范围。

这种方法的缺点是应用程序的使用者可能必须根据范围和属性的可能排列来创建许多角色。

  1. 当然,如果第一种方法不够用,您始终可以考虑实施自己的方法。在这种情况下,您的应用程序必须根据用户上下文自行建模和解决依赖关系,即,您必须创建一个数据库 table 将用户映射到范围 and/or 其他属性,然后查找根据来自 Json Web 令牌的信息运行属性。