Jhipster实现谷歌第三方登录
Posted chenfq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,到这只要本机能上网就能使用谷歌第三方登录自己的网站了。
以上是关于Jhipster实现谷歌第三方登录的主要内容,如果未能解决你的问题,请参考以下文章
iOS 第三方登录之苹果登录(sign in with Apple)