【发布时间】:2020-04-16 04:22:50
【问题描述】:
我想为在 laravel 上运行的一堆微服务实现一个 api 网关。在网关前面有一个角度客户端,用户必须使用用户名和密码登录。这个想法是用户将带有凭据的请求发送到网关,网关将其转发到身份验证服务。如果数据正确,将颁发一个令牌,该令牌将包含在每个进一步的请求中。
我想我会用 kong 和 oauth2 插件来实现网关。我已经查看了他们的文档https://docs.konghq.com/hub/kong-inc/oauth2/#resource-owner-password-credentials,但我不太了解流程。
Angular 客户端是否必须在第一次请求时直接与身份验证服务通信?如果是这样,身份验证服务是否需要自己的 url?我认为如果所有请求都通过网关会更有意义,不是吗?
谢谢!
【问题讨论】:
-
这真的取决于你的实现,但 Angular 应用程序通常是 SPA。 SPA 应用程序应该使用
OpenID Connect Code Flow with PKCE,它应该由 SPA 应用程序本身实现(例如github.com/damienbod/angular-auth-oidc-client)。如果没有非标准的应用程序/网关黑客攻击,身份验证代理(您的问题中的 kong)将无法向 SPA 应用程序提供用户身份。
标签: laravel authentication oauth-2.0 api-gateway kong