如何在 Authentication Server 上为 SPA 配置客户端 - 带验证的 REST 架构?
How do I configure clients at Authentication Server for SPA - REST architecture with validation?
我知道这个话题已经很流行了,而且已经有很多票了。但是在查看了数百张工单和页面后,我没有找到必要的架构信息。
我计划的是一个简单的 SPA (Angular) - REST 后端(单独的 .Net Core 2.1 WebApi)设置。我有 Keycloak 通过 OpenId Connect 提供身份验证。我正在使用 Angular 的 OpenId 包与 Keycloak 通信,以获取 ID 和访问令牌。
我想要的是 Angular 客户端只能访问身份令牌和信息 isAuthenticated/LoggedIn。 Angular 前端不应该对访问令牌感兴趣,对吧?所以我也可以加密访问令牌以保护信息?
然后我将加密的访问令牌传递到我的 REST 后端(可以访问应用程序机密),在那里我可以验证加密的签名、令牌的加密主体以及可能在身份验证服务器上的内省令牌以验证和授予获得资源?
但为什么有那么多文章指出 Keycloak 机密客户端(具有应用程序机密)不是 SPA 设置的正确方法? SPA本身不需要秘密,只有后端需要,或者不需要?
如果有任何信息可以帮助我弥补剩余的差距,我将不胜感激。
The access token should not be of interest for the Angular frontend, right?
是的,您的客户端只需验证和解码 ID 令牌即可获取用户的个人资料信息。访问令牌用于访问受保护的资源,不需要在客户端应用程序中验证访问令牌。
So I could also encrypt the access token to secure information?
不确定我是否理解您的情况。 JWT 可以签名、加密或两者兼而有之,由令牌服务控制。当您的后端网站 api 收到访问令牌时,它将验证访问令牌,使用身份提供商发布的 public 密钥验证签名。
But why does so many articles state that a Keycloak confidential client (has an app secret) is not a proper way for SPA setup?
现在建议使用授权代码授予流程和代码交换证明密钥 (PKCE) 来保护 Angular 应用程序。它比在 spa 应用程序中保密客户端更安全。我对 Keycloak 不熟悉,但您可以单击 here 阅读有关如何在 Angular 应用程序中使用 Keycloak 作为 IDP 使用代码流 + PKCE 的文章。
我知道这个话题已经很流行了,而且已经有很多票了。但是在查看了数百张工单和页面后,我没有找到必要的架构信息。
我计划的是一个简单的 SPA (Angular) - REST 后端(单独的 .Net Core 2.1 WebApi)设置。我有 Keycloak 通过 OpenId Connect 提供身份验证。我正在使用 Angular 的 OpenId 包与 Keycloak 通信,以获取 ID 和访问令牌。
我想要的是 Angular 客户端只能访问身份令牌和信息 isAuthenticated/LoggedIn。 Angular 前端不应该对访问令牌感兴趣,对吧?所以我也可以加密访问令牌以保护信息?
然后我将加密的访问令牌传递到我的 REST 后端(可以访问应用程序机密),在那里我可以验证加密的签名、令牌的加密主体以及可能在身份验证服务器上的内省令牌以验证和授予获得资源?
但为什么有那么多文章指出 Keycloak 机密客户端(具有应用程序机密)不是 SPA 设置的正确方法? SPA本身不需要秘密,只有后端需要,或者不需要?
如果有任何信息可以帮助我弥补剩余的差距,我将不胜感激。
The access token should not be of interest for the Angular frontend, right?
是的,您的客户端只需验证和解码 ID 令牌即可获取用户的个人资料信息。访问令牌用于访问受保护的资源,不需要在客户端应用程序中验证访问令牌。
So I could also encrypt the access token to secure information?
不确定我是否理解您的情况。 JWT 可以签名、加密或两者兼而有之,由令牌服务控制。当您的后端网站 api 收到访问令牌时,它将验证访问令牌,使用身份提供商发布的 public 密钥验证签名。
But why does so many articles state that a Keycloak confidential client (has an app secret) is not a proper way for SPA setup?
现在建议使用授权代码授予流程和代码交换证明密钥 (PKCE) 来保护 Angular 应用程序。它比在 spa 应用程序中保密客户端更安全。我对 Keycloak 不熟悉,但您可以单击 here 阅读有关如何在 Angular 应用程序中使用 Keycloak 作为 IDP 使用代码流 + PKCE 的文章。