如何在Weblogic中设置KeyClope

如何在Weblogic中设置KeyClope,weblogic,servlet-filters,keycloak,Weblogic,Servlet Filters,Keycloak,我正在使用我的游乐场keydape 2.5.5-finaldocker图像和weblogic 12.2.1docker图像 我已经创建了一个密钥斗篷并集成到我的app.war(在web.xml中) 现在,当我尝试访问servlet并使用令牌调用它时,出现了以下问题: GET https://localhost:7005/test/ Accept: */* Cache-Control: no-cache Authorization: bearer eyJhbGc.... 我从weblogic获得

我正在使用我的游乐场
keydape 2.5.5-final
docker图像和
weblogic 12.2.1
docker图像

我已经创建了一个密钥斗篷并集成到我的app.war(在web.xml中)

现在,当我尝试访问servlet并使用令牌调用它时,出现了以下问题:

GET https://localhost:7005/test/
Accept: */*
Cache-Control: no-cache
Authorization: bearer eyJhbGc....
我从weblogic获得:
错误401——未经授权的

我将此理解为:调用尝试对weblogic进行身份验证,而不是对KeyClope进行身份验证。到达keydape过滤器,因为我可以看到在过滤器中完成的日志记录

我的问题是:我必须在weblogic中设置一些东西才能识别KeyClope过滤器吗?

下面是该应用程序的
weblogic.xml

    <?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.6/weblogic-web-app.xsd">

    <context-root>test</context-root>

    <session-descriptor>
        <cookie-secure>true</cookie-secure>
    </session-descriptor>

    <container-descriptor>
        <prefer-application-packages>
            <package-name>javax.faces.*</package-name>
            <package-name>net.sf.cglib.*</package-name>
            <package-name>org.objectweb.asm.*</package-name>
            <package-name>antlr.*</package-name>
            <package-name>com.fasterxml</package-name>
            <package-name>org.apache.logging.*</package-name>
            <package-name>org.keycloak.*</package-name>
        </prefer-application-packages>

        <prefer-application-resources>
            <resource-name>META-INF/resources/javax.faces.*</resource-name>

            <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
        </prefer-application-resources>
    </container-descriptor>

    <charset-params>
        <input-charset>
            <resource-path>/*</resource-path>
            <java-charset-name>UTF-8</java-charset-name>
        </input-charset>
    </charset-params>
</weblogic-web-app>

即使我可以从weblogic容器到KeyClope容器进行卷曲并接收访问令牌:

curl -X POST -d "grant_type=password" -d "client_id=test" -d "username=demo" 
-d "password=demodemo" "http://localhost:8080/auth/realms/demo/protocol/openid-connect/token"
问题在于我从中得出的
localhost
解决方案是在keydove设置(
keydove.json
或您可能拥有的其他设置)中使用您自己的ip而不是本地主机

curl -X POST -d "grant_type=password" -d "client_id=test" -d "username=demo" 
-d "password=demodemo" "http://localhost:8080/auth/realms/demo/protocol/openid-connect/token"
{
  "realm": "demo",
  "auth-server-url": "http://myip:8080/auth", //instead of localhost
  "ssl-required": "external",
  "resource": "test",
  "public-client": true
}