- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们有一些 RESTful API,我们想要公开其资源。最终用户将通过客户端应用程序(如在 Web 浏览器上运行的移动应用程序和基于 Javascript 的客户端)使用此 API。
使用 OAuth 2.0,此 RESTful API 将位于资源服务器上,我们将拥有一个授权服务器,客户端应用程序在该授权服务器上注册。然后,用户将在授权服务器上注册,并且能够代表他们授予这些应用程序访问资源的权限,也可以不代表他们访问资源。
因此,当用户访问一个客户端应用程序时,他将被重定向到授权服务器并被提示授予该客户端应用程序的权限。之后颁发访问 token 并且客户端能够向资源服务器发出请求。
这一切我都很清楚。只有一个缺失的部分:每个资源的保护可能取决于用户。更准确地说,它可能取决于 claim 。我的意思是我们可以有以下情况:
Authorization: Bearer [token]
发送请求时 header ,在服务器端设置了线程主体,我认为这意味着用户已通过 API 进行身份验证。所以我用了
[Authorize]
属性以验证用户是否可以访问资源。
最佳答案
访问 token 不包含用户的声明,但它包含 主题 授予客户端应用程序权限的用户。 “主题”是一个技术术语,它意味着一个唯一的标识符。简单地说,“主题”是您数据库中的用户 ID。
在 protected 资源端点,您将执行以下操作:
at_hash
,则可以将其用于此目的。正确声明 ID token (参见
3.1.3.6. ID Token 中的“
OpenID Connect Core 1.0”)。但是,在 protected 资源端点上,直接从数据库中获取声明比解析 ID token 要容易得多。
sub
的值。在 ID token 中声明。
So is there anything wrong in extracting the subject from the access token like that and verify the claims? Or this is the right way of doing things?
https://api.example.com/profile
,它返回用户的个人资料信息。在正常情况下,这样的 API 会接受访问 token ,然后从访问 token 中提取主题以确定要引用的用户。另一方面,如果 API 没有从访问 token 中提取主题,则必须要求“主题”作为请求参数来确定要引用哪个用户(或要求包含“子”声明的 ID token ) .即使在这种情况下,API 也必须检查请求参数指定的主题和访问 token 关联的主题是否相同,否则将成为安全问题。
plan
宣称。当然,只有在从访问 token 中提取主题之后才能检查此类声明。
关于api - 如何验证每个用户可以使用 OAuth 和 OpenID Connect 访问哪些资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377012/
使用 caret::train() 运行逻辑回归模型时出现问题。LR = caret::train(Satisfaction ~., data= log_train, method = "glm",
我正在尝试将nginx容器作为我所有网站和Web服务的主要入口点。我设法将portainer作为容器运行,并且可以从互联网上访问它。现在,我正在尝试访问由另一个Nginx容器托管的静态网站,但这样做失
我有一个在 Windows XP SP3 x86 上运行的 Visual Studio 2008 C# .NET 3.5 应用程序。在我的应用程序中,我有一个事件处理程序 OnSendTask 可以同
我在 Eclipse 中创建了作为独立程序执行的此类,它可以毫无问题地连接所有 http URL(例如:http://stackoverflow.com),但是当我尝试连接到 https(例如 htt
我在我的 nginx 错误日志中收到大量以下错误: connect() failed (111: Connection refused) while connecting to upstream 我的
我正在尝试将新的 log4j2 与 Socket Appender 一起使用,但我有点不走运。这是我的 XML 配置文件:
我目前正在尝试寻找 Android 应用程序后端的替代方案。目前,我使用 php servlet 来查询 Mysql 数据库。数据库(Mysql)托管在我大学的计算机上,因此我无法更改任何配置,因为我
类MapperExtension有一些方法,before_insert, before_update, ...都有一个参数connection. def before_insert(self, map
嗨,我正在尝试更改位于连接库 (v 5.5) 中的文档的文档所有者,我仍在等待 IBM 的回复,但对我来说可能需要太长时间,这就是我尝试的原因逆向工程。 我尝试使用标准编辑器 POST 请求将编辑器更
我在 nginx( http://52.xx.xx.xx/ )上访问我的 IP 时遇到 502 网关错误,日志只是这样说: 2015/09/18 13:03:37 [error] 32636#0: *
我要实现 Connected-Component Labeling但我不确定我应该以 4-connected 还是 8-connected 的方式来做。我已经阅读了大约 3 种 Material ,但
我在Resources ->JMS ->Connection Factories下有两个连接工厂。 1) 连接工厂 2)集成连接工厂 我想修改两个连接工厂下连接池的最大连接数。资源 ->JMS ->连
我在将 mongoengine 合并到我的 django 应用程序时遇到问题。以下是我收到的错误: Traceback (most recent call last): File "/home/d
上下文 我正在关注 tutorial on writing a TCP server last week in Real World Haskell .一切顺利,我的最终版本可以正常工作,并且能够在
我在访问我的域时遇到了这个问题:我看到了我的默认 http500 错误 django 模板正在显示。 我有 gunicorn 设置: command = '/usr/local/bin/gunicor
我更换了电脑,并重新安装了所有版本:tomcat 8 和 6、netbeans 8、jdk 1.7、hibernate 4.3.4,但是当我运行 Web 应用程序时,出现此错误。过去使用我的旧电脑时,
您好,我是这个项目的新手,我在 CentOS7 ec2 实例上托管它时遇到问题。当我访问我的域时出现此错误: 2017/02/17 05:53:35 [error] 27#27: *20 connec
在开始之前,我已经查看了所有我能找到的类似问题,但没有找到解决我的问题的方法。 我正在运行 2 个 docker 容器,1 个用于 nginx,1 个用于 nodejs api。我正在使用 nginx
使用 debian 包将 kaa -iot 平台配置为单节点时。我收到以下错误。 himanshu@himpc:~/kaa/deb$ sudo dpkg -i kaa-node-0.10.0.deb
我是我公司开发团队的成员,担任管理员角色。我可以通过 https://developer.apple.com/ 访问团队的成员(member)中心 但是,当我尝试在 https://itunescon
我是一名优秀的程序员,十分优秀!