OAuth和Kerbose
OAuth是一套认证、授权体系,主要用来提供给第三方授权访问,单点登录、微信登录这些都是属于Oauth认证,跟Kerbose有一些类似。Kerbose主要就是做认证的,不涉及授权。 OAuth和kerbose的整个认证体系比较类似,都有授权服务器、应用服务器和客户端几个角色,步骤也基本上差不多,比较容易混淆,这里做一个简单的比较。里面会有涉及到几个概念:
AS: 认证服务器,主要是对用户的身份进行认证(其中OAuth需要输入用户名和密码,Kerbose只需要用户名即可),然后返回总票据,不涉及任何业务。 用户凭这个总票据可以去进一步获取具体业务的票据。
TGS: 票据授权服务器,用户通过上一步拿到的票据加上一些其他的信息去访问,在这里可以拿到具体业务的票据。
Client或Http Service : 应用服务器,用户要实际访问的服务器,通过上一步获取到的业务票据来访问,获取到实际的资源。
TGT或Authorization Code: 用户身份的凭证或总票据,在OAuth中是保存在应用服务器的后端的,在Kerbose中则保存在客户端。总票据通常有效期为1-7天。
ST 或accessToken: 具体业务的票据,都是保存在客户端。通常有效期在几分钟到几小时以内。
优缺点对比:
Kerbose跟OAuth相比不用在网络上传输密码, 只需要用户本地通过密码解密TGT验证即可,如果解密失败则无法进行下一步验证,相当于HTTPS建立连接过程中里面客户端对服务端证书的认证,这一步相对安全性会更高一点。而服务端对客户端的认证则主要是依赖于用户名/ID、时间戳对比以及对TGT/ST的解密来保证凭证的安全性。但如果被第三方通过客户端本地拷贝的方式窃取了TGT或者ST,并且在较短的时间内用这个票据去请求服务器,则能通过校验而具有安全隐患。
而OAuth 相对于Kerbose来说,在AS认证这一步需要输入用户名、密码,存在被第三方截获密码或凭证的可能性,需要对密码本身做二次加密来保证安全性,而后续由于code保存在服务器,accessToken的有效期也较短(一般在一分钟以内),反倒安全性还好。
参考:
https://blog.csdn.net/SkyChaserYu/article/details/104891996/
https://blog.csdn.net/Stephen_mu/article/details/122308029