Jhipster实现谷歌第三方登录

Authentication(认证)和Authorization(授权)

  开始做谷歌第三方登录之前,需要搞清楚两个概念:authentication(认证)和authorization(授权)。认证关注你是谁,授权关注你能做些什么。

  举个例子:去机场登机的时候,乘客手持的机票就是他们的凭证(token),手持机票过检票口就是一个认证(authentication)的过程;过安检时,乘客可以授权保安对自己随身携带物品进行检查,也可以选择拒绝授权保安检查自己(当然这时候也不能进机场了),这就是一个授权(authorization)的过程。

  jhipster使用了JWT和OAuth2这两种技术实现第三方登陆的。

JWT&OAuth2

JWT 是一种认证协议

  JWT提供了一种用于发布接入令牌(Access Token),并对发布的签名接入令牌进行验证的方法。 令牌(Token)本身包含了一系列声明,应用程序可以根据这些声明限制用户对资源的访问。

OAuth2 是一种授权框架

  OAuth2是一种授权框架,提供了一套详细的授权机制。用户或应用可以通过公开的或私有的设置,授权第三方应用访问特定资源。

  很多情况下使用OAuth2时会把Json Web Token作为一种认证机制使用。

 上图模拟了一个第三方登陆的过程:

1,用户登陆clientApp。

2,clientApp提供用户第三方登陆按钮可供选择

3,用户登陆谷歌等第三方账号

4,谷歌授权服务器重定向到clientApp的回调地址,包含谷歌授权服务器生成的code(用于后来获取谷歌授权服务器的token令牌,ClientApp有了token就能访问谷歌资源服务器的受保护的内容)

5,用户登入重定向地址

6,clientApp对谷歌授权服务器发送认证码code,申请的clientId,clientSecret

7,谷歌授权服务器确认了是已经注册过的clientApp,和根据code确认了用户已经授权登入,返回给clientApp一个token令牌

8,clientApp拿着token到谷歌资源服务器去获取受保护的资源,用户便能登陆clientApp

上述简单模拟了第三方登陆的整个过程,但OAuth2协议包含着:

Client Types 客户端类型

这里的客户端主要指API的使用者。它可以是的类型:

  • 私有的(自建)

  • 公开的(Google、GitHub、Twitter、Facebook 等)

Client Profile 客户端描述

OAuth2 框架也指定了集中客户端描述,用来表示应用程序的类型:

  • Web应用

  • 用户代理

  • 原生应用

Authorization Grants 认证授权

认证授权代表资源拥有者授权给客户端应用程序的一组权限,可以是下边几种形式:

  • 授权码模式(Authorization Code)

  • 简化模式(Implicit)

  • 密码模式(Resource Owner Password Credentials)

  • 客户端模式(Client Credentials)

  • 令牌终端(Endpoints)

OAuth2框架需要下边几种终端:

  • 认证终端

  • Token 终端

  • 重定向终端

OAuth定义了一些非常复杂的规范,这里也介绍不了那么详细

jhipster实现谷歌第三方登录

1,创建Google Api控制台项目和客户端ID

首先前往Google API 控制台选择或者创建一个项目

 2,保存生成的client_id和client_secret

3,添加到application.yml配置文件中修改内容

把申请的client_id和client_secret填进去

4,修改谷歌的回调地址

重定向url后缀需要写/sign/google,到这只要本机能上网就能使用谷歌第三方登录自己的网站了。

猜你喜欢

转载自www.cnblogs.com/chenfq/p/9214484.html
今日推荐