发布于 2020-03-24 09:22:43
假设您使用的是Spring Security的最新版本,那么这里有several ways to handle authorization with that framework。我知道的一种方法是实现一个定制的AccessDecisionVoter,或者,如果一个AccessDecisionVoter不足以满足您的需求,那么实现一个定制的(虽然更复杂) AbstractAccessDecisionManager。您可以找到一个很好的教程,了解如何在Tim te Beek's blog上实现、配置和启用您自己的AccessDecisionVoter。然后,在AccessDecisionVoter的投票中(...)方法时,您可以使用授权请求调用外部授权服务器,并获得允许/拒绝响应。
有一个国际(OASIS)标准,它为这种ABAC授权请求/响应以及策略/规则定义了语法/格式和语义:XACML。XACML还有一个REST Profile,它为基于XACML的授权服务器定义了HTTP/REST API;还有一个JSON Profile,它为请求/响应定义了JSON格式,作为XML的替代。因此,XACML定义了一种将授权外部化到授权服务器的标准方法。
这些符合XACML的服务器中的一些可以在数据库中存储ABAC (XACML)策略/规则,例如具有Policy Provider plugin such as the MongoDB policy provider的AuthzForce RESTful PDP。
https://stackoverflow.com/questions/60797971
复制相似问题