如何一起使用JWT和0auth

时间:2017-04-10 16:51:58

标签: rest authentication oauth architecture jwt

我正在尝试构建基于RESTful API的应用程序,并且我想提供一种用于身份验证JWT和0auth的方法(用于用户访问的JWT和用于应用访问的0auth)。
总之,我想做:

User Access (Web App, Mobile App - JWT)
------------------------> /
                            ----------------------->  /api/login
                            ----------------------->  /api/logout

Client's app (API KEY - 0auth)
------------------------> /services/getInfo
                          /services/getProducts

用户可以使用网络应用程序,并希望将其应用程序的某些功能与我的服务集成,如Facebook,Github等。
我不确定这种方法,因为这是我第一次设计一个大型应用程序 问题如下:

  1. 我是否还应该使用JWT进行身份验证?
  2. 使用JWT,我可以追踪应用程序的请求数量吗?
  3. 我可以撤销JWT令牌吗?
  4. 0auth协议是否优于JWT以便通过app进行身份验证?

1 个答案:

答案 0 :(得分:0)

Oauth 2.0是一种授权协议,不应用于身份验证。考虑为您的方案使用Openid Connect。它在oauth之上工作,因此流程与一些即兴创作相同。

在这种情况下,您可以注册您的应用程序,以便为最终用户和应用程序内的呼叫使用相同的协议。

请探索应用访问的客户端凭据流以及Web App的隐式/混合流。

Openid connect使用jwt令牌进行身份验证和授权。

身份服务器3是Openid connect的认证实现。他们的文档很好,他们有一个积极的支持论坛来帮助您查询。

请参阅:

https://www.safaribooksonline.com/library/view/identity-and-data/9781491937006/ch04.html

https://leastprivilege.com/2016/01/17/which-openid-connectoauth-2-o-flow-is-the-right-one/

https://github.com/IdentityServer/IdentityServer3

https://github.com/IdentityServer/IdentityServer3.Samples