对于Oauth2的个人理解,服务器篇

相信大家都知道网上有很多实现oauth2的框架,这个我就不多说了

现在我们公司的oauth2是没有用任何框架,全部我自己封装搭建起来的,我先来说说简单的思想


1.连接器

oauth2,首先在使用之前一定要有连接器,连接器会有client_id和client_secret,redirect_uri三个属性,当中client_id是会暴露给用户的,但client_secret,redirect_uri只在于给开发者

举例:当我们用微博登录csdn,在csdn登录页的url中,我们会看到client_id,当我们点登录之后,微博会调用csdn的一个链接也就是redirect_uri,并传过去一个code,csdn根据这个code,client_id和client_secret,去调用微博的接口,获取access_token,所以client_secret是用于csdn对于微博链接去使用,不会外露。而且client_secret是可以手动刷新,一但csdn发现外露,可以手动去刷新,方式别人盗用。还有redirect_uri,这个是csdn配置在微博连接器中的,微博只会调用csdn的这个rest接口


2.token类型

正常的在上面连接器篇章中,描述的那套逻辑是code获取token的类型,其实还有password获取的类型

这两种类型的本质区别是:code登录,是会跳转到微博的登录页面,不会把密码泄漏给csdn,但如果用password的方式,csdn就可以做自己的微博登录页面,这样用户微博密码有被第三方发现的可能性

虽然password的方式不推荐,但服务器端也有对应支持的接口,需要的参数就是client_id和client_secret,redirect_uri,username,password,secret,secret是用户令牌,为了安全,用户一定会有一个自己的令牌,用来对密码加密但同样会被第三方窃取。

所以这种令牌我们一般都是开发给开发者,比如开发者要批量导入数据,或者批量查询数据,通过api访问数据的时候,如果用code的方式,登录太繁琐,而且access_token不会暴露给登陆人,因此开发者调试程序的时候多用password的方式去获取token

3.如何搭建

首先我们需要一个连接器的表 integrator 包含   id,name,client_id和client_secret,redirect_uri,然后user表中,要添加一个secret字段

然后有一个code表,code表和user表,连接器表integrator对应   id ,code,user_id, integrator_id

一个access_token表,oauth_access_token 包含 id,access_token,integrator_id,user_id,refresh_token

4.扩展

这样满足的表就足够了,因为是自己搭建,我们可以添加其他信息,比如连接器配置黑名单,白名单,token失效时间

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OAuth2认证服务器和授权服务器OAuth2协议中的两个重要组件。 认证服务器(Authorization Server)的主要作用是验证用户的身份和颁发访问令牌。当用户通过登录认证后,认证服务器会对用户进行身份验证,验证通过后会生成一个访问令牌(Access Token),并将其返回给客户端应用程序。认证服务器通常保存有用户的账号密码等敏感信息,并根据不同的授权模式(如授权码模式、密码模式等)进行验证,确保只有合法的用户能够获取到访问令牌。 授权服务器(Authorization Server)的主要作用是授予资源访问权限。当客户端应用程序希望获取资源时,需要向授权服务器发送授权请求,并提供之前获得的访问令牌。授权服务器验证访问令牌的有效性,并根据客户端应用程序的权限配置决定是否授予对资源的访问权限。如果授权成功,授权服务器会将请求的资源返回给客户端应用程序。 认证服务器和授权服务器之间通常是相互协作的关系。当用户进行登录认证时,认证服务器负责验证用户的身份,并在验证通过后生成访问令牌。然后,客户端应用程序将访问令牌传递给授权服务器,请求对资源的访问权限。授权服务器负责验证访问令牌的有效性,并根据权限配置决定是否授予访问权限。 总之,OAuth2认证服务器和授权服务器OAuth2协议中起到了身份验证和授权的作用,保护了用户的敏感信息和资源的安全性。这两个服务器相互配合,实现了安全和灵活的用户认证和资源访问机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值