我的申请中有三方:
这三者之间的一般通信:Web客户端W可以是前端UI或仅使用API作为服务而没有任何前端的移动设备。 W连接到微服务A来操纵和使用微服务A中的数据。微服务A与微服务B交换数据,反之亦然。 W不需要了解B。
我已经确定了Web客户端的体系结构,使用的Openid授权代码流已启用PKCE,以从Keycloak获取和刷新其令牌。我在这里[1]发表了一个相关问题。
现在考虑此Web应用程序W正在使用我的微服务A的一些数据。来自Web客户端的JWT令牌作为承载授权发送到微服务。
到目前为止,一切都很好。为了使服务能够获取并最终刷新令牌以供其用于验证和用户信息请求,我应该对微服务本身使用哪种流程?我已经读了很多书,但是在几乎每个地方,工作流程中都有一个客户在玩。
PKCE Auth Code流可以用于微服务吗(例如,不是登录,而是让服务器发送凭据以换取短暂的令牌)?还是微服务应该以保密模式简单地通过秘密获取令牌?
因为我正在用C ++实现微服务,所以它基本上意味着缺少库。因此,如果您详细说明流程,那将是很好的,因为我必须实现它。
如果我理解正确,则有两种身份验证模式: