当前位置: 首页 > 知识库问答 >
问题:

spring oauth 2 client details . getauthorities()如何帮助/工作?

燕实
2023-03-14

我正在浏览Spring OAuth2 Client详细信息接口的api文档(源代码)。我不知道这是如何工作的,也不知道clientDetails.getAuthorities()在授权流程中是如何帮助的。API文档描述如下:

Collection<org.springframework.security.core.GrantedAuthority> getAuthorities()

Returns the authorities that are granted to the OAuth client. Cannot return null. Note that these are NOT the authorities that are granted to the user with an authorized access token. Instead, these authorities are inherent to the client itself.

Returns:
    the authorities (never null)

而且我理解上面和userDetails接口的< code > user details . getauthorities()不一样。API文档如下所示:

java.util.Collection<? extends GrantedAuthority> getAuthorities()

Returns the authorities granted to the user. Cannot return null.

Returns:
    the authorities, sorted by natural key (never null) 

据我所知,在客户详情中,我们正在处理向OAuth2客户端授予权限,而在用户详情中,我们正在向用户即委托人授予权限。

但是前者和后来有什么不同,什么时候用前者。

稍微阐述一下-
在处理OAuth的时候,我们处理的是Auth Server发出的令牌。令牌通常是< code>jwt令牌,其中包含关于授予用户的权限的信息。典型的base64解码令牌的有效负载可能如下所示:

{
  "app-userId": "c54a-4140-9fa0-0f39",
  "user_name": "abc@xyz.com",
  "scope": [
    "all"
  ],
  "exp": 1656929583,
  "authorities": [
    "app1_viewer",
    "app1_modifier",
    "app2_viewer",
    "app2_blog_creator],
  "client_id": "client_A"
  ...
}

上面的权限是登录并使用应用程序的用户的权限。

    < li >当用户访问app1时,它会检查上述jwt令牌,以确保用户具有所需的权限。 < li >如果app1必须调用app2,则app1将特定于当前用户的上述jwt(作为授权头)传递给app2。App2处理在头中收到的这个jwt令牌,并检查用户是否有访问/编辑资源的权限。并相应地返回200或403。

如您所见,该过程正在处理userDetails.getAuthorities()。因此,clientDetails.getAuthorities()如何以及在何处或在何种情况下提供帮助。它的用例/示例是什么。有人能解释一下吗?谢谢您的任何回答。

共有1个答案

西门庆
2023-03-14

我不是Java英雄,但我经常使用Azure和OAuth2。你的问题让我思考那可能是什么。从我了解到的是,当局决定谁获得有效令牌,谁没有(令牌发行者)。从微软Azure留档关于MSAL,我得到以下信息:

权威

authority是一个URL,指示MSAL可以向其请求令牌的目录。

共同的权威机构是:

    < Li > https://log in . Microsoft online . com/TENANT/< br >仅允许特定组织的用户登录。URL中的是Azure Active Directory (Azure AD)租户的租户ID(GUID)或其租户域。 < Li > https://log in . Microsoft online . com/common/使用工作和学校帐户或个人Microsoft帐户登录用户。 < Li > https://log in . Microsoft online . com/organizations/使用工作和学校帐户登录用户。 < Li > https://log in . Microsoft online . com/consumers/仅使用个人Microsoft帐户(MSA)登录用户。

一个有效的用例可能是想要构建一个多租户应用程序。因此,来自多个权限的用户能够注册和登录您的应用程序。根据权限,您可以过滤用户可以看到的数据,例如,仅过滤来自用户组织的数据。基本上与您如何使用userDetails.getAuthorities()中的应用程序角色来根据用户在特定应用程序中的角色限制用户可以看到或执行的操作的想法相同。

 类似资料:
  • 请帮助理解我如何在我的例子中使用fkatMap(): 我看了留档。我知道如何工作,但我不明白我需要如何在我的例子中使用。谢谢。

  • 如流,是百度旗下新一代智能工作平台,以知识管理为核心,构建AI时代工作流水线,助力企业实现提效创新,赋能企业在智能经济时代打造核心竞争力。

  • 工作区布局和基础知识 触控工作区是一种经过改良的全新工作区,它简单、直观,专门为在运行 Windows 8 且支持触控的设备上使用而设计。该工作区经过优化,能够简便、快速且有效地实现触控交互。 Illustrator CC 中的新触控工作区(2014 年 10 月) A. 应用程序栏 B. 工具栏 C. 控制面板栏 D. 文档栏  该布局具有更简洁的界面,使您可以舒适地使用光笔,指尖可以轻松敲到触

  • 铅笔工具 “铅笔工具”得到了改进,恢复了该工具在以前版本的 Illustrator 中所具有的某些精细控件。 增强的“铅笔工具选项”对话框 新增“保真度”预设 “保真度”滑块目前有 5 个预设。添加新滑块预设(最精确的预设)的目的是为了帮助您尽可能绘制最精确的路径。新增的预设也已添加到“平滑工具选项”对话框中。 “Alt 键切换到平滑工具”选项 如果选中此复选框,使用“铅笔工具”或“画笔工具”时,

  • 曲率工具可简化路径创建,使绘图变得简单、直观。利用新工具,您可以创建、切换、编辑、添加或删除平滑点或角点 - 所有这些操作均可通过同一工具完成。您无需在不同的工具之间来回切换即可快速准确地处理路径。 选择曲率工具。 注意:曲率工具的组合键是 Shift + ~(同时按键盘上的 Shift 和波形符)。 在画板上设置两个点,然后查看橡皮筋预览,会根据鼠标悬停位置显示生成路径的形状。 注意:默认情况下

  • 启动 Photoshop 时,“工具”面板将显示在屏幕左侧。“工具”面板中的某些工具会在上下文相关选项栏中提供一些选项。 可以展开某些工具以查看它们后面的隐藏工具。工具图标右下角的小三角形表示存在隐藏工具。 将指针放在工具上,便可以查看有关该工具的信息。工具的名称将出现在指针下面的工具提示中。 有关 Photoshop 中不同工具的图形化介绍,请参阅工具库。 通过 Photoshop Mix,您可