当前位置: 首页 > 面试题库 >

在Spring Security OAuth2中将范围用作角色(提供程序)

公良鸿畅
2023-03-14
问题内容:

让我们考虑一个相当简单的假设应用程序,用户可以在其中阅读或撰写帖子。

有些用户可以阅读和撰写文章,而另一些用户只能阅读。使用Spring Security(3.2.1),我通过扮演2个角色来对此建模:

ROLE_WRITE:此角色授予用户访问撰写帖子的权限。
ROLE_READ:此角色授予用户访问阅读文章的权限。
使用Spring安全性实现这一点非常简单…

现在,我还希望通过使用Spring Security OAuth(版本2.0.0.M3 ATM)实现OAuth2提供程序来允许第三方应用代表用户读取和写入帖子。

在授权步骤中,应用程序会询问用户是否愿意授予代表他们阅读和/或撰写帖子的权利。这里的用户在这里授予作用域(不是角色)。

然后,当OAuth2使用者调用我的REST API时,Spring Sec OAuth将对授予的令牌进行授权,并创建一个包含用户及其所有角色和仅授予范围的认证。

问题(和问题)是,我现在必须编写不同的安全逻辑,具体取决于API是由正常身份验证的用户调用(仅检查角色)还是通过OAuth2调用(检查角色+范围)。

是否可以“合并” Spring Security OAuth2中的角色和范围的概念,以便在授权步骤中,用户向应用授予他们所拥有的角色的子集(并且OAuth2身份验证仅在所授予的权限中报告这些角色) ?这样,当第三方应用程序进行API调用时,身份验证上的角色是否被授予?这样,我不必编写任何OAuth2特定的安全性逻辑。


问题答案:
本文向大家介绍在Spring Security OAuth2中将范围用作角色(提供程序)相关面试题,主要包含被问及在Spring Security OAuth2中将范围用作角色(提供程序)时的应答技巧和注意事项,需要的朋友参考一下

作用域(和角色)是任意字符串,因此如果要使其相同就没有问题。要使访问规则声明相同,您可以编写一个ExpressionHandler经过测试的授权机构或范围,并根据Authentication发现的类型使用相同的值。

阅读注释后,建议使用其他方法:添加自定义TokenStoreResourceServerTokenServices。这些是易于访问的扩展点,将允许OAuth2Authentication对其进行修改,以使其授予的权限与范围相同。

但是,我的首选是使用来控制允许的范围OAuth2RequestFactory,在令牌授予时将它们限制为与用户权限一致的值。



 类似资料:
  • 问题内容: 我正在使用babel和webpack来玩React(@ 13.3)。 我有一个定义如下的组件: 但我收到以下错误: 未捕获的ReferenceError:未定义React 我理解错误:JSX位已编译到其中,但由于未导入而不在当前范围内。 我的问题是:解决此问题的干净方法是什么?我是否必须以某种方式在全球范围内公开使用webpack? 使用的解决方案: 我遵循@ salehen-rahm

  • 问题内容: 我一点都不熟悉ASP.NET成员资格/角色。这是我第一次使用它,也是我第一次尝试使用ASP.NET MVC。当我为MVC创建第一个项目时,它为我提供了一个可爱的模板来创建帐户。我很高兴看到我不必手动执行此操作。但是,它失败了,因为它无法连接到SQL Server。我没有SQL Server,我有MySQL。有什么简单的方法可以使该系统改为使用MySQL,还是必须创建自己的身份验证? 问

  • 在CDI中,我能够将bean注入特定的作用域,即定义bean类的作用域。但是,如果我在没有任何作用域的情况下创建bean类,并在注入点为该bean提供作用域,该怎么办呢。我的要求是在后一种情况下使注射时间范围确定成为可能。问题是注入是在而不是所需的带注释的作用域中发生的,除非我使用。 例如: 案例1: 当我在类声明中声明bean的作用域时,如下所示: 像这样注射: 它按预期工作。在应用程序范围中注

  • 在为android项目添加新的依赖项时,特别是在中,在中,有三个作用域选项compile/provide/apk。

  • 我最近发现龙目山。jar最终会出现在我们的最终工件中,这应该是不必要的。在我看来,lombok只是编译时的。 但是当我将它设置为提供的范围时,我在单元测试中会遇到奇怪的行为。当试图解决时,它们会与ClassNotFoundExceptions崩溃 龙目山通常使用哪种maven范围? 我在MacOSX 10.9上使用Oracle JDK build 1.8.0_25-b17

  • 问题 是否可以创建一个动态ValueRangeProvider,其值范围取决于规划变量的当前值?或者有什么其他的方法可以达到这种想要的效果? 轮班需要分配员工,以便尽可能多地覆盖轮班的持续时间 员工只能在每个轮班和每个员工唯一的特定时间内开始 员工和他们的开始时间都需要作为严格的硬约束进行优化(员工不能被安排到没有可用时间的班次,而且开始时间也不能超出该员工在该班次的可用时间) 员工工作的持续时间