SvelteKit和keycloak-js, code_to_token_error和invalid_client_cr



我使用keycloak-js来保护我的sveltekit UI应用程序。

<script lang="ts">
import { onMount } from "svelte";
import Keycloak from "keycloak-js";
import type { KeycloakInitOptions }  from "keycloak-js";
onMount(  () => {
let instance = {
url: "http://localhost:8080",
realm: "my-realm",
clientId: "my-client"
};
let keycloak = new Keycloak(instance);
let initOptions: KeycloakInitOptions = { onLoad: "login-required" 
};
keycloak.init(initOptions).then(function (authenticated) {
console.info("authorized);
}).catch(function () {
alert("unauthorized");
});
}
);
</script>

我在docker中部署的keycloak上收到这个错误。

WARN  [org.keycloak.events] (executor-thread-69) type=CODE_TO_TOKEN_ERROR, realmId=..., clientId=my-client, userId=null, ipAddress=..., error=invalid_client_credentials, grant_type=authorization_code

从postman中检索令牌可以工作。

根据您的错误信息:

WARN  [org.keycloak.events] (executor-thread-69) type=CODE_TO_TOKEN_ERROR, realmId=..., clientId=my-client, userId=null, ipAddress=..., error=invalid_client_credentials, grant_type=authorization_code

它看起来像Keycloak正在期待一个client secret,这基于你的配置:

let instance = {
url: "http://localhost:8080",
realm: "my-realm",
clientId: "my-client"
};

推断客户端my-client为机密客户端。但是,由于您使用的是javascript适配器,因此实际上应该创建一个公共客户端,而不是一个机密客户端。

将客户端my-clientaccess-typeconfidential改为public

相关内容

  • 没有找到相关文章

最新更新