在 keycloak-Angular 中设置客户端密码

Posted

技术标签:

【中文标题】在 keycloak-Angular 中设置客户端密码【英文标题】:set client-secret in keyclok-Angular 【发布时间】:2021-06-13 19:37:12 【问题描述】:

我无法在 keyClock 的配置对象中设置客户端密码

function initializeKeycloak(keycloak: KeycloakService) 
  return () =>
    keycloak.init(
      config: 
        url: 'http://localhost:8080/auth',
        realm: 'your-realm',
        clientId: 'your-client-id',
        client-secret: 'xxxxxxxxxxx'    <-- problem
      ,
      initOptions: 
        onLoad: 'check-sso',
        silentCheckSsoRedirectUri:
          window.location.origin + '/assets/silent-check-sso.html',
      ,
    );

我们可以在哪里设置 clicnt-secret? 请帮帮我 谢谢

【问题讨论】:

【参考方案1】:

当最终用户可能查看和修改代码时,客户端应用程序被认为是公开的。这包括单页应用程序 (SPA) 或任何移动或本机应用程序。在这两种情况下,应用程序都无法对恶意用户保密。 所以你的 Angular 代码是公开的,它不能保守任何秘密。不要在那里保存任何秘密,而是使用公共 OIDC 客户端和为此指定的 Authorization Code Flow with PKCE

请阅读使用库的文档以了解更多详细信息。只是想法(不是完整的工作复制和粘贴代码!):

function initializeKeycloak(keycloak: KeycloakService) 
  return () =>
    keycloak.init(
      config: 
        url: 'http://localhost:8080/auth',
        realm: 'your-realm',
        clientId: 'your-client-id'
      ,
      initOptions: 
        checkLoginIframe: false, 
        pkceMethod: 'S256'
        onLoad: 'login-required'
      ,
    );

【讨论】:

感谢您的回复!!现在我创建了不同的服务来获取客户端机密(出于安全目的),但是我如何修改我的请求以便也添加客户端机密?

以上是关于在 keycloak-Angular 中设置客户端密码的主要内容,如果未能解决你的问题,请参考以下文章

在 Express 中设置客户端可访问的 Cookie

如何在 gwt 客户端中设置 Cookie?

在 paypal API(客户端站点)中设置描述

mongo客户端在main函数中设置,其他模块函数接收nil值

如何在 Qt 中设置嵌入式 MySQL 客户端

如何在 Java 中设置客户端/服务器?