小编A. *_*ner的帖子

keycloak realmresourceprovider科西

我正在评估某些IAM产品,并使用Keycloak的RealmResourceProvider遇到了CORS问题。目标是编写一个能够使用Keycloak的REST接口创建用户和管理组的angular4客户端。

服务器端:

我试图用RealmResourceProvider接口实现Rest接口,以便尽可能容易地访问Realm和User Data。我遵循了Beercloak示例(github.com/dteleguin/beercloak)并使其正常运行,但是没有自定义主题(仅REST资源)。我自己的应用程序打包为Jar。我设法通过REST Client调用了这个Facade,并且它起作用了(先调用localhost:8080 / auth / realms / master / protocol / openid-connect / token,然后将令牌填充到Authorization-Header中)。

keycloak-configuration 但是,如果我通过浏览器对其进行测试,则需要启用Cross-Origin-Ressource-Sharing。为此,我在服务器应用程序的“ keycloak.json”中添加了“ enable-cors”属性:

{
"realm": "master",
"auth-server-url": "http://localhost:8080/auth",
"ssl-required": "external",
"resource": "pharmacyRessource",
"public-client": true,
"enable-cors": true
}
Run Code Online (Sandbox Code Playgroud)

另外,我在Keycloak Admin中创建了一个客户端。 客户端配置

客户端和问题:

角度客户端使用github.com/mohuk/ng2-keycloak/blob/master/src/keycloak.service.ts中的Mohuks ng2-keycloak服务获取访问令牌。- 工作正常。但是如果我对我的资源进行GET请求,则预检失败是因为缺少Access-Control-Allow-Origin标头: 错误401 用于初始化javascript中的keycloak-client的keycloak.json如下所示:

{
  "realm": "master",
  "auth-server-url": "http://localhost:8080/auth",
  "ssl-required": "external",
  "resource": "pharmacyRessource",
  "public-client": true
}
Run Code Online (Sandbox Code Playgroud)

我失败的解决方案:

  • 我尝试实现CORS筛选器,但未成功,因为无法通过keycloak进行注册。
  • 我还实现了@OPTIONS方法并自己添加了CORSE标头。也不起作用,因为从未调用过Method。
  • 我试图将其打包为.war以便启用自定义过滤器/提供程序,但未能将资源注册到keycloak。

我的测试环境是来自hub.docker.com/r/jboss/keycloak/的官方Docker容器

cross-domain keycloak

5
推荐指数
1
解决办法
1220
查看次数

标签 统计

cross-domain ×1

keycloak ×1