来自: 首页 » 归档于 五月 2020

五月 2020

构建OAuth2.0服务端(二)实现前的准备

一、选用基于某个语言的OAuth2.0库

这里使用PHP语言的league/oauth2-server

二、生成公钥和私钥

1. 生成私钥:

# 默认
openssl genrsa -out private.key 2048

# 加密码的
openssl genrsa -passout pass:_密码_ -out private.key 2048

2. 从私钥提取公钥:

# 默认
openssl rsa -in private.key -pubout -out public.key

# 加密码的
openssl rsa -in private.key -passin pass:_passphrase_ -pubout -out public.key

私钥一定保密存好,公钥分发给客户端

三、生成密钥

密钥用于加密授权和刷新代码,由语言层面生成

根据SDK不同,生成方式各有不同,详情需要查看对应SDK的文档


[……]

继续阅读

构建OAuth2.0服务端(一)选择授权类型

网上汉化的叫法众多,本文以阮一峰老师博客的叫法为准。

1. 是否拥有AccessToken?

Access Token:用于访问受保护资源的令牌。

如果有(机器自动认证,不需要用户授权),选用

客户端凭证

如果需要用户授权,则需要进行客户端的判断

2. 客户端类型?

根据客户端安全级别,来选择不同的认证方式。

1)服务端应用(如服务端渲染)

通常安全级别较高,选用

授权码

2)纯前端应用(包括web的SPA和原生APP)

应使用(Proof Key for Code Exchange,PKCE)

基于PKCE扩展的授权码

3)第三方应用

也应使用

授权码

区别在于要打开设备上的原生浏览器,而不能使用嵌入的浏览器

如:iOS上要打开Safiri,而不是使用WebView模拟

传统授权方式

密码式隐藏式 有各自的缺点,这里不再展开介绍,详细可查看底部参考链接。

作为替代:

  • 对 密码式 改用 授权码;
  • 对 隐藏式 改为 基于PKCE扩展的授权码


[……]

继续阅读