我希望我的依赖方应用程序(RP)能够与任何oidc提供程序连接。这意味着用户将能够设置任何支持openid connect的身份提供程序。
因此,我希望我的RP应用程序有一个重定向uri,例如
这样所有IDP都会在auth代码流中调用相同的IDP。
RP如何区分每个IDP?并知道要调用哪个IDP来完成oauth流程?
您可以使用auth请求的state参数:
state
用于维持请求和回调之间状态的不透明值...
状态值将包含随机部分和auth privider标识符。例如“google-A41DsGDm”。 auth提供程序应该使用包含auth代码的重定向URL返回相同的状态值。所以你的/auth/callback
处理程序会知道,哪个auth提供者的/token
端点调用来获取令牌(在验证状态值的随机部分之后)。
为了完整起见,如果您只想使用单个后端处理程序,则可以将以/auth/callback
开头的所有URI映射到处理程序,并接受以下路径参数作为auth提供程序标识符。例如/auth/callback/google?code=...
。