【问题标题】:How do I implement oauth2 with kong api gateway?如何使用 kong api 网关实现 oauth2?
【发布时间】: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


【解决方案1】:

据我了解,您的 Angular 应用程序可以将用户名:密码发送到 kong 网关,这会将请求代理到您的身份验证服务。您可以验证用户在您的身份验证服务中是否合法。

1) 如果合法,则向 kong 的 oauth2 插件提供的 /oauth2/token 端点发出请求。 Kong 会将您的身份验证服务返回一个 access_token,您可以将其返回给用户

2) 如果不合法,则抛出错误。

Angular 客户端是否必须在第一次请求时直接与身份验证服务通信?

只有当您的身份验证服务是第三方服务时,您才可以这样做。

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2019-05-31
    • 2019-10-26
    • 2020-08-25
    相关资源
    最近更新 更多