私は古いアプリケーションを企業向けの「ビジネス」の方法で書き直そうとしています。
それで、ログインモジュールを備えたSwingクライアントと、ゼロから作成した独自のサーバーを手に入れました。クライアントはssl証明書を使用してサーバーへのTCP接続を暗号化し(サーバーでクライアント証明書をチェックし、クライアントでサーバー証明書をチェックします)、サーバーはデータベースを使用してユーザーを認証および承認します。
現在、WildFly 8 CR1 がホストする ejb で動作させようとしています。同じクライアント/サーバー キー ペアを使用して Swing クライアントを WildFly サーバーに接続し、MySQL データソースに保存されている名前と資格情報でユーザーを認証したいと考えています。データベースにロールも保存されており、それらを使用してクライアントプリンシパルを構成したいと考えています。
シンプルで基本的な EJB 呼び出しがあります。
Context ctx = new InitialContext();
MyBeanRemote bean = (MyBeanRemote)ctx.lookup("AppName/module-0.0.1-SNAPSHOT/MyBean!my.app.MyBeanRemote");
ResultType result = bean.doSomething();
jndi.properties ファイルがあります
java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=http-remoting://myServer:8080
jboss.naming.client.ejb.context=true
java.naming.security.principal=app-user-name
java.naming.security.credentials=password@123
そして、基本的なデータソース構成があります
<datasource jta="false" jndi-name="java:jboss/datasources/MyDB" pool-name="MyDB" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://localhost:3306/Mydb</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver>mysql-connector-java-5.1.28-bin.jar</driver>
<security>
<user-name>mysqlUser</user-name>
<password>mysqlPass</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
上記のすべてが正常に動作します。
いくつかのガイドを読みましたが、EJB (Web ではない) + WildFly 8 (JBoss 7 ではない) + SSL による暗号化 + ログイン クライアント モジュールを使用したデータソース経由の認証と承認の複合体の使用方法を説明しているガイドが見つかりません。
どんな助けでも大歓迎です。
私の英語でごめんなさい、私はこの言語を書くのではなく読むのによく使います:)