跨域 – keycloak realmresourceprovider corse

跨域 – keycloak realmresourceprovider corse,第1张

概述我正在评估一些IAM产品,并遇到了来自Keycloak的RealmResourceProvider的CORS问题. 目标是使用Keycloak的REST接口编写一个能够创建用户和管理组的angular4客户端. 服务器端: 我尝试使用RealmResourceProvider接口实现Rest接口,以便尽可能简单地访问Realm和User Data. 我遵循Beercloak示例(github.co 我正在评估一些IAM产品,并遇到了来自Keycloak的RealmResourceProvIDer的CORS问题.
目标是使用Keycloak的REST接口编写一个能够创建用户和管理组的angular4客户端.

服务器端:

我尝试使用RealmResourceProvIDer接口实现Rest接口,以便尽可能简单地访问Realm和User Data.
我遵循Beercloak示例(github.com/dteleguin/beercloak)并使其正常工作,但没有自定义主题(仅限REST-Resources).我自己的应用程序打包为Jar.
我设法通过REST客户端调用此Facade并且​​它工作(通过首先调用localhost:8080 / auth / realms / master / protocol / openID-connect / token然后在Authorization-header中填充Token).

keycloak配置
但如果我通过浏览器进行测试,我将需要启用Cross-Origin-Ressource-Sharing.为此,我将’enable-cors’属性添加到服务器应用程序中的’keycloak.Json’:

{"realm": "master","auth-server-url": "http://localhost:8080/auth","ssl-required": "external","resource": "pharmacyRessource","public-clIEnt": true,"enable-cors": true}

另外,我在Keycloak管理员中创建了一个客户端.
Client Config

客户端和问题:

角度客户端使用来自github.com/mohuk/ng2-keycloak/blob/master/src/keycloak.service.ts的Mohuks ng2-keycloak服务来获取accessstoken. – 工作良好.
但是如果我向我的资源发出GET请求,则由于缺少Access-Control-Allow-Origin标头,预检失败:
Error 401
用于在JavaScript中初始化keycloak-clIEnt的keycloak.Json如下所示:

{  "realm": "master","public-clIEnt": true}

失败的解决方案:

>我试图实现一个CORS过滤器,但我没有成功,因为我
无法通过keycloak注册.
>我还实现了@OPTIONS方法并附加了CORSE headers
我.也没用,因为方法永远不会被调用.
>我尝试将其打包为.war以启用自定义
过滤器/提供程序,但在将资源注册到keycloak时失败了.

我的测试环境是hub.docker.com/r/jboss/keycloak/的正式docker容器

解决方法 您是否需要在keycloak服务器中启用CORS(在wildlfy中运行).您可以这样做,将代码放在来自wildfly的standalone.xml中:

<subsystem xmlns="urn:jboss:domain:undertow:4.0">        <buffer-cache name="default"/>        <server name="default-server">            <http-Listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>            <https-Listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>            <host name="default-host" alias="localhost">                <location name="/" handler="welcome-content"/>                 <filter-ref name="server-header"/>        <filter-ref name="x-powered-by-header"/>        <filter-ref name="Access-Control-Allow-Origin"/>        <filter-ref name="Access-Control-Allow-Methods"/>        <filter-ref name="Access-Control-Allow-headers"/>        <filter-ref name="Access-Control-Allow-Credentials"/>        <filter-ref name="Access-Control-Max-Age"/>                <http-invoker security-realm="ApplicationRealm"/>            </host>        </server>        <servlet-container name="default">            <Jsp-config/>            <websockets/>        </servlet-container>        <handlers>            <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>        </handlers>            <filters>        <response-header name="server-header" header-name="Server" header-value="WildFly/10"/>        <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>        <response-header name="Access-Control-Allow-Origin" header-name="Access-Control-Allow-Origin" header-value="http://localhost"/>        <response-header name="Access-Control-Allow-Methods" header-name="Access-Control-Allow-Methods" header-value="GET,POST,OPTIONS,PUT"/>        <response-header name="Access-Control-Allow-headers" header-name="Access-Control-Allow-headers" header-value="accept,authorization,content-type,x-requested-with"/>        <response-header name="Access-Control-Allow-Credentials" header-name="Access-Control-Allow-Credentials" header-value="true"/>        <response-header name="Access-Control-Max-Age" header-name="Access-Control-Max-Age" header-value="1"/>      </filters>    </subsystem>
@H_404_63@ 总结

以上是内存溢出为你收集整理的跨域 – keycloak realmresourceprovider corse全部内容,希望文章能够帮你解决跨域 – keycloak realmresourceprovider corse所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1058115.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存