以前、Glassfish で動作するコードがいくつかありましたが、それを WildFly に移植したいと考えています。
ただし、モジュールを WildFly から呼び出すことはできないようです。はServletContextListener
、次のようにモジュールを初期化します
AuthConfigFactory.getFactory() .registerConfigProvider(新しい OpenIdConnectModuleConfigProvider(オプション、null)、 "HttpServlet", getAppContext(sce), null);
"HttpServlet"
Glassfish固有のものではなく、https://github.com/wildfly/wildfly/blob/master/undertow/src/main/java/org/wildfly/extension/undertow/security/jaspi/JASPIAuthenticationMechanism.javaで参照されているようです?ソース=cc
Glassfish は<logon-config>
ブロックを必要とせずweb.xml
、WildFly にバリアントを配置しても機能しません (予想どおり)。
私が疑っているもう 1 つの場所は、アプリケーション コンテキスト識別子の計算方法です。私が持っていたGlassfishの場合
private String getAppContext(final ServletContextEvent sce) {
return sce.getServletContext()
.getVirtualServerName() + " "
+ sce.getServletContext()
.getContextPath();
}
WildFly では違うのでしょうか? https://github.com/rdebusscher/secSpikeWeb/blob/master/src/main/java/org/omnifaces/security/jaspic/core/Jaspic.java#L300でも同様のコードを見ましたが
私もstandalone.xml
このブロックに追加しようとしました
<security-domain name="jaspi" cache-type="default">
<authentication-jaspi>
<login-module-stack name="dummy">
<login-module code="Dummy" flag="optional"/>
</login-module-stack>
<auth-module code="org.wildfly.extension.undertow.security.jaspi.modules.HTTPSchemeServerAuthModule" flag="required"/>
</authentication-jaspi>
</security-domain>
そしてセット<default-security-domain value="jaspi"/>
ただし、効果はなく、モジュールにブレークポイントを配置しても、ヒットすることは示されませんでした。
さらに、WildFly でのように次のことを行う方法を見つけることができませんでしたglassfish-web.xml
が、それは別の質問になる可能性があります
<security-role-mapping>
<role-name>users</role-name>
<group-name>https://helloworld</group-name>
</security-role-mapping>
コードはかなり大きいですが、その要点は次の場所にあります。
https://github.com/trajano/openid-connect/tree/openid-connect-1.0.1/openid-connect-jaspic-module
と
https://github.com/trajano/openid-connect/tree/openid-connect-1.0.1/openid-connect-jaspic-sample
私はアプリケーションレベルでそれを探しており、グローバルサーバー JASPI を設定していないことに注意してください。