我们确实在努力理解OIDC如何在B2C(或任何提供商的OIDC)中工作。
我们认为我们理解了协议的(某些)部分...但是却与其他部分完全混淆了。
想知道是否有人可以看一下下图,并希望(更正)发布更正。
我们的问题是:
但是要调用另一个Service,我们应该缓存返回的Auth_Token,以便可以使用它来调用ServiceB? (或者我们现在完全弄错了树吗?)
当ServiceB调用失败(例如,作用域不足)时,该怎么办? ServiceA是否将UserAgent发送回IdP,并在该IdP处获得新的Auth_Token,客户端(即ServiceA)使用它来替换其先前缓存的Auth_Token,并尝试再次调用ServiceB?
最后(我们对此有很多争论)。是否假设ServiceA返回Cookie AND BearerToken,以便客户端可以在随后的API调用中使用BearerToken ...或者在调用ServiceA的API时客户端应该使用Cookie进行身份验证?
我们知道这是很多问题。但是我们想不出一种将我们面临的问题分解成较小的离散问题的方法。整个事情目前使我们感到困惑。
谢谢。非常。
到目前为止,我们在这里构建的序列图可以在这里查看:
PS:如果有帮助,可以从此处重新编辑和重新嵌入上面的图像(图像底部的文本/图像链接):
答案 0 :(得分:0)
请参考this repository,其中显示了令牌验证逻辑如何与OpenID Connect和B2C一起工作。
在将用户发送到以下位置之前创建会话记录是否正确? IdP,然后将会话记录Guid id保存为Nonce?
是的,这应该是正确的。
在重新发行令牌时,Nonce会保持不变吗?
我不确定您的意思,但在ID令牌的现时声明中该值将保持不变,所以应该。
请参见also>
值得为您的案例寻求客户支持,因为有很多问题可能最适合产品团队。我将跟进这些问题,并尽快与您联系。