限制来自未知来源的 openid-connect 用户信息请求

Posted

技术标签:

【中文标题】限制来自未知来源的 openid-connect 用户信息请求【英文标题】:Restrict openid-connect userinfo request from unknown source 【发布时间】:2017-11-18 01:56:52 【问题描述】:

如何限制来自未知来源的 openid-connect 请求。

如果我们有可用的访问令牌,任何人都可以请求我们想要限制的用户信息(我们将用户信息和声明保存到用户信息中)。

意味着,我们应该只允许来自已知客户的请求。

注意:我们使用 Keycloak 作为身份服务器

请帮忙!!

【问题讨论】:

【参考方案1】:

首先,访问令牌必须与用户凭据一样受到保护。 OAuth2.0 框架给我们的是用动态生成的令牌替换基于用户名/密码的身份验证/授权的能力。因此,这些令牌必须受到保护。这就是为什么 TLS 是令牌传输的必要条件。

RFC6749 section 10.3 - 访问令牌凭据(以及任何 机密访问令牌属性)必须在 中转和存储,只在授权之间共享 服务器,访问令牌对其有效的资源服务器,以及 向其颁发访问令牌的客户端。访问令牌 凭据必须仅使用 TLS 传输,如 第 1.6 节,使用 [RFC2818] 定义的服务器身份验证。

因此,如果您担心访问令牌滥用,您必须首先担心采用基于令牌的通信。您的客户必须足够安全,不会滥用令牌。

您还可以做的另一件事是启用 CORS 标头以限制对端点的访问。但是,这只是在保护令牌之后。!

p.s 或者,可以将网络配置设置为仅允许已知/有效的 IP 地址与您的后端通信。但这超出了 OIDC 协议。

【讨论】:

谢谢!!但是,我没有得到实际答案,是的,我们正在保护访问令牌。实际上,如果任何用户通过未知来源或邮递员拥有访问令牌,他们都可以请求用户信息权限。我想限制这一点。如果请求仅来自我们的客户(微服务),请分享详细信息。 @Nick 正如您在示例中给出的那样,您不发送带有有效访问令牌的邮递员请求吗?这意味着如果您的访问令牌受到保护并且没有其他方可以获取它,他们将无法从 userinfo 端点获取信息。该协议的保护仅限于访问令牌(我的回答解释了原因)。或者,可以调整网络以将目标受众以外的 IP 地址列入黑名单。但这是从网络的角度来看。

以上是关于限制来自未知来源的 openid-connect 用户信息请求的主要内容,如果未能解决你的问题,请参考以下文章

mac电脑如何限制应用安装来源

Mac 不显示未知来源选项的解决办法

未知的警告来源:“找不到虚拟表的链接器符号...”

如何阻止来自未知域/IP 对我的 REST API 的调用?

如何限制 Lambda 函数仅响应特定来源?

android 8未知来源app安装