【问题标题】:OIDC, OAuth2.0 and role of access token when OAuth client application and resource server are not differentOIDC、OAuth2.0和OAuth客户端应用程序和资源服务器不不同时访问令牌的作用
【发布时间】:2020-05-18 20:46:13
【问题描述】:

我正在开发ASP.NET MVC 5 网络应用程序。它只有一层包含视图以及业务逻辑/操作。业务逻辑在逻辑上与 UI 分离,但它不在单独的 Web 服务/API 层之后。

现在当我在我的应用程序中使用OIDCOAuth2.0 时,没有单独的Resource Server,可以这么说。因为客户端本身拥有我想要访问的所有资源。

我正在使用授权代码流进行身份验证和授权。

问题:

  1. access token 在这种情况下有什么作用吗?如果是,是什么?
  2. 我将如何实际使用访问令牌?由于客户端本身就是资源服务器,因此我不需要向其发送访问令牌。

【问题讨论】:

    标签: asp.net-mvc asp.net-core oauth-2.0 identityserver4 openid-connect


    【解决方案1】:

    在这种情况下,您应该使用客户端凭据流而不是授权码流。 在客户端凭据流中,您的应用程序会将您的客户端 ID 和客户端密码直接发送到授权端点并请求访问令牌。客户端凭据流中不需要授权代码。详情如下

    1. 授权代码流通常需要您的客户端重定向 资源所有者到授权端点并获得授权 来自授权端点的代码,客户端比使用此代码获取 访问令牌,在一天结束时,客户端使用访问令牌来 访问受保护的资源。
    2. 在客户端凭据流中。您的客户端应用程序实际上是 你的资源。因此无需询问授权码。直接的 使用自己的客户端凭据从 授权端点并使用该访问令牌访问受保护的 资源(资源服务器)

    【讨论】:

    • 授权代码流程优于客户端凭证流程。首先,您的应用程序(前端和后端)看不到用户的凭据,因此它们被泄露的可能性较小。其次,授权代码流可用于单点登录 (SSO) 环境。然后,如果您想使用更复杂的身份验证,可能很难在您的应用程序中实现。如果您不能使用任何其他流,则客户端凭据流通常只是最后的手段。
    【解决方案2】:

    我猜你会得到一个 ID 令牌,其中包含验证用户所需的所有信息。如果没有,您可以使用访问令牌来获取用户信息。如果这是您需要的所有信息,则不再需要访问令牌。这是因为 OAuth2 是一个权限委托协议,而不是一个身份验证协议。

    当您拥有用户信息时,您可以在浏览器和您的 ASP.NET 后端之间以任何方式实现。你可以看看OAuth 2.0 for Browser-Based Apps RFC

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-14
      • 2017-01-30
      • 2020-04-16
      • 2021-06-03
      • 2019-08-16
      • 2022-10-15
      • 2019-06-11
      • 2021-01-24
      相关资源
      最近更新 更多