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

shu*_*oni 1 javascript keycloak keycloak-services keycloak-connect

我无法在 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',
      },
    });
}
Run Code Online (Sandbox Code Playgroud)

我们可以在哪里设置客户端秘密? 请帮助我,谢谢

Jan*_*raj 5

当最终用户可以查看和修改代码时,客户端应用程序被认为是公开的。这包括单页应用程序 (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'
      },
    });
}
Run Code Online (Sandbox Code Playgroud)