代码之家  ›  专栏  ›  技术社区  ›  Andy N

OIDC:非用户的用户信息

  •  1
  • Andy N  · 技术社区  · 6 年前

    目前我有一个系统,它使用来自/userinfo端点的信息来决定是否允许他们访问特定的资源。

    这很管用。但是,现在我想允许一台机器访问X公司的资源(不涉及用户)。如果我创建一个服务帐户并使用客户端凭据授权获得一个访问令牌,那么将没有相应的userinfo(因为没有用户)。

    我的问题是-什么是允许机器访问X公司数据的正确方法?

    注意:公司(在本例中)不是固定列表。它们可以动态添加。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kavindu Dodanduwa    6 年前

    当你指的是机器时,我假设你有一个在机器上运行的客户端应用程序。这个客户机需要获取令牌并使用资源。

    就OAuth 2.0而言,最终用户不必获得令牌。这是使用客户端凭据授予时看到的内容。另外,用户信息端点由OpenID Connect定义。在OpenID Connect中,每个流都涉及最终用户交互(最终用户身份验证)。

    1. 使用 Resource Owner Password Credentials Grant

    在这里,您可以创建一个特定于上述机器的用户,并与客户机共享其密码。这个用户很特别,这意味着它不是人类。您可以进一步定义此类用户的规则

    1. 使用 Client Credentials Grant

    您将无法获得有关用户信息终结点的任何帮助。但您必须信任访问令牌并允许访问资源。例如,这是匿名访问。特殊的资源集将接受这一点,并且这些资源将不属于任何用户。