我正在编写一个在 keycloak 服务器中创建新客户端的 API。我使用 gocloak 包与 keycloak 服务器交互。起初我将来自 gocloak.Login() 函数的访问令牌传递给 gocloak.CreateClient() 并收到 403 错误之后我使用来自 gocloak.LoginAdmin() 的访问令牌并且它有效,它确实创建了一个新的客户。那么是什么导致从 gocloak.Login() 返回的访问令牌失败呢?
代码:
func main() {
newClientID := "new_client"
client := gocloak.NewClient("http://localhost:8080")
// The access token returned from Login() causes 403 error
jwt, _ := client.Login(context.Background(), "my-go-service", "vizhhp0qnDGaiq4k0aOzzn4RaaqSwU2b", "master", "admin", "Pa55w0rd")
_, err := client.CreateClient(context.Background(), jwt.AccessToken, "demorealm", gocloak.Client{ ClientID: &newClientID})
if err != nil {
fmt.Println(err.Error())
}
// And the access token returned from LoginAdmin() works
jwt, _ = client.LoginAdmin(context.Background(), "admin", "Pa55w0rd", "master")
clientID, err := client.CreateClient(context.Background(), jwt.AccessToken, "demorealm", gocloak.Client{ ClientID: &newClientID})
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Printf("Client %s created", clientID)
}
}
结果:
403 Forbidden: unknown_error
Client d869fd8d-e5f0-4567-99de-69ccc4403705 created
慕娘9325324
相关分类