【问题标题】:OAuth 2.0 - first step details, can someone clarify?OAuth 2.0 - 第一步细节,有人可以澄清吗?
【发布时间】:2016-08-04 21:52:10
【问题描述】:

在许多描述中,第一步是用户尝试访问服务器上的资源,例如

https://fhirblog.files.wordpress.com/2014/06/oauth2sequencediagram.png

现在我得到了一个带有严重端点的 Rest API:

GET /server/resource1
DELETE /server/resource1/{uuid}
GET /server/resource2
...

实现看起来像这样:

@DELETE
public Response deleteResource(
    @ApiParam(value = "The id", required=true) 
    @PathParam("uuid") String uuid, 
    @Context SecurityContext securityContext)
throws NotFoundException {

到目前为止,我已经实现了一个 apikey,它通过 header 传递到 api 和一个验证 apikey 的过滤器。

现在我想实现一个完整的(三/两条腿)oauth 2.0 流程。但我现在想知道第一步。

所以问题是:
我是否必须在 每个 端点上添加一个机制来验证请求是否具有令牌?如果不将请求重定向到身份验证端点?

(也 我可以在 HttpHeader 中发送令牌还是令牌必须在请求的正文中?)

或者: 我是否必须只创建一个执行令牌内容的 一个 端点,而在我的其他资源端点中我只验证令牌是否有效?

【问题讨论】:

    标签: java rest oauth-2.0 swagger


    【解决方案1】:

    好了,解释就到这里了,

    我是否必须在每个端点上添加一个机制来验证请求是否具有令牌?如果不将请求重定向到身份验证端点?

    这个问题有两个部分,所以我将分别解释一下,以便更好地理解,

    • 是否必须在每个端点上添加一种机制来验证请求是否具有令牌?

      是的,通常端点是 API,因此您需要设置中间件或拦截器或过滤器,以检查此端点是否需要授权,如果需要,请检查访问令牌,如果有效则继续请求,如果不返回401 Unauthorized 作为 Http 响应,例如:

      /server/*的所有请求都必须使用访问令牌访问,然后您需要为这些路径设置过滤器并检查访问令牌,

    • 如果不将请求重定向到身份验证端点?

      不,如果没有提供访问令牌或在任何情况下无效或过期,您需要返回 Unauthorized http响应,如下所示,

      状态码:401

      {"ok":false,"errors":[{"code":"unauthorized_request","message":"未授权请求,访问令牌无效/过期"}]}

      这里是它的 json 响应,但任何格式都可以

    因此,当客户端发出 http 请求以访问端点时,他们需要在 HTTP Header 中传递访问令牌,如下所示,

    Authorization: Bearer {access_token}
    

    我是否必须只创建一个端点来处理令牌,而在我的其他资源端点中我只验证令牌是否有效?

    是的,您需要创建一个类似 /auth 的端点(通常称为 Auth Endpoints)来处理身份验证过程、代码交换、刷新、撤销等。

    那么所有其他资源端点应该只是检查令牌并处理请求,这些端点不会参与令牌管理过程

    【讨论】:

      猜你喜欢
      • 2014-05-21
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      相关资源
      最近更新 更多