咨询:Duende Identity Server(v6)能否通过PKCE流调用旧Identity Server5
能否通过PKCE流从Duende Identity Server v6调用旧的Identity Server5?
可以实现,但需要两端完成正确配置,核心要求和步骤如下:
确认旧Identity Server5支持PKCE
Identity Server(包括Duende的早期版本)从较早就支持PKCE授权码流,只要你的旧IS5不是过于老旧的版本,默认应该已支持该特性。若不确定,可检查旧IS5的客户端配置是否允许authorization_code类型并开启RequirePkce。在旧IS5中注册Duende IS6为客户端
在旧IS5的客户端配置中添加Duende IS6的条目:- 设置客户端类型为
public(PKCE多用于公共/半公共客户端场景) - 授权类型指定为
authorization_code,并将RequirePkce设为true - 配置正确的重定向URI(即Duende IS6接收授权码的回调地址)
- 分配Duende IS6需要访问的资源Scopes
- 设置客户端类型为
在Duende IS6中配置旧IS5为外部身份提供者
将旧IS5作为Duende IS6的外部OAuth2身份源,配置关键参数:- 填入旧IS5的授权端点、令牌端点、用户信息端点的完整地址
- 使用在旧IS5中注册的客户端ID
- 开启PKCE支持,确保Duende IS6在发起授权请求时自动生成
code_challenge和code_verifier - 指定需要从旧IS5请求的Scopes
处理令牌验证与身份映射
Duende IS6获取旧IS5颁发的令牌后,需验证其有效性(可通过导入旧IS5的公钥或信任其密钥集实现),并将旧IS5返回的用户信息映射到Duende IS6的本地用户模型,最终为Angular移动应用颁发符合自身配置的令牌。
注意事项
- 确保两端的签名算法兼容,Duende IS6需信任旧IS5的签名密钥
- 若部署在不同域名下,需在旧IS5的CORS配置中允许Duende IS6的域名
- 全流程测试:从Angular应用发起认证 → Duende跳转至旧IS5登录 → 用户授权 → 旧IS5返回授权码 → Duende通过PKCE验证换取令牌 → Duende向Angular颁发令牌
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

