带有微前端的 Keycloak

Keycloak with Microfrontends

鉴于显示的架构:

是否可以通过 Oauth2,让用户同意披萨订购向他发送通知,而不是烤肉串订购?

到目前为止我的想法,解决“Oauth”中的问题space: 为每个微服务(=oauth2 客户端)注册一个 keycloak 机密客户端,并允许用户(资源所有者)分别同意每个客户端访问通知服务(范围/资源服务器)。

但是为一个 SPA 注册多个客户端对我来说似乎很奇怪...... 此外,如果用户同意,后端将需要持续存在,如果同意,则在请求令牌时附加可选范围。

这是可行的解决方案还是有更好的方法来满足要求?

编辑: 附加说明:披萨订购和烤肉串订购系统可能由外部公司提供,因此我们不希望“相信他们行为正常”,而是从技术上强制要求他们仅在用户同意的情况下才发送通知。

(请忘记kebap客户端调用pizza的情况-api ... ;)

同意

用户只有在涉及他们的个人资产时才应该同意。例如,该应用程序可以使用我的电子邮件,但不能使用我的家庭住址。发送通知的权限只是首选项 - 在应用程序中管理它们 - 例如在初始登录后通过 complete your profile 工作流程。

范围

对应用自身数据的权限是一个不同的概念。最佳做法是通过范围和声明而不是同意来管理它们。

这里的scope best practices article可能对你有用。它解释了单个客户端如何使用多种类型的数据。

它还描述了微服务如何在需要时相互调用,同时安全地维护用户身份。 UI 和 API 并不总是一对一的映射。

你的例子

我认为用户可以同意使用电子邮件范围,以授予对其电子邮件收件箱的访问权限。然后通过应用程序内的某种设置屏幕管理更精细的细节。

然后您的后端负责管理数据连接和访问。范围对于跨组件调用很有用,但我会避免为每种类型的食物设置范围。合作伙伴连接将各自使用自己的机制,但您不需要让用户参与其中。