2016-11-11 8 views
1

JWT認証を実装し、Java EEのトークンから余分な情報を取得しようとしています。Java EE(JBoss EAP)カスタム認証方式JWT

私のweb.xmlファイルに "jwt"というカスタム認証方式が必要ですが、これはBASIC、DIGEST、FORM、CLIENT-CERT以外にはサポートされていません。

カスタムログインメソッドを使用して認証プロセスを開始する方法はありますか?

私はクライアントとの対話を必要とせず、AuthorizationヘッダーはBearer領域を使用して呼び出し側アプリケーションから移入されます。

すなわち許可:ベアラcn389ncoiwuencr

+0

同じ問題があります。これをカバーしたドキュメントはありません! –

+0

@MatthewCachia私はこれを行うために私自身のモジュールを書きました。私はこれを行う方法の詳細を共有することができます。それをオープンソースにしようとしているが、まだしていない。 – IanWatson

+0

@MatthewCachia下記の回答をご覧ください。 – IanWatson

答えて

0

注これは6.4 EAPでテストされ、変更は、バルブの使用に特にV7のために必要とされ得ます。

カスタムxx.Authenticationメカニズムを記述する必要があります。これを行うには、org.apache.cataline.authenticator.FormAuthenticatorを拡張し、authenticateメソッドをオーバーライドします。

authenticateメソッドは、レルムは、あなたのセキュリティサブシステムの下で、スタンドアロン-XMLに設定することができます

Principal principal = request.getUserPrincipal(); 
if (principal != null) { 
logger.trace("User already authenticated"); 
return true; 
} 

Realm realm = context.getRealm(); 

principal = realm.authenticate("user", (String) null); 

register(request, response, principal, "Bearer", "user", null); 

return true; 

を実行します。

<security-domain name="JWT"> 
    <authentication> 
     <login-module code="xx.xx.xx.JWTLoginModule" flag="required"> 
     </login-module> 
    </authentication> 
</security-domain> 

JWTLoginModuleはhttps://github.com/jwtk/jjwtライブラリを使用するカスタムのLoginModuleです。ログインモジュールに関する情報はhttps://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.3/html/Security_Guide/chap-Login_Modules.htmlにあります。自分自身を作成するには、org.jboss.security.auth.spi.AbstractServerLoginModuleを継承します。

これで、拡張モジュールをorg.picketboxモジュールと同じモジュールの依存関係を持つeapサーバーのmodulesディレクトリに追加する必要があります。

これで、サーバーのセットアップは完了です。作成あなたのWEB-INFディレクトリに

:今、あなたは、この設定を使用するようにアプリケーションを指示する必要があり のjboss-web.xmlのを

<jboss-web> 
    <security-domain>JWT</security-domain> 
    <valve> 
     <class-name>xx.Authentication</class-name> 
    </valve> 
</jboss-web> 

とカスタムモジュールにロードするJBossの展開構造として

<jboss-deployment-structure> 
    <deployment> 
     <dependencies> 
      <module name="xx.custom"/> 
     </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

最後に、web.xmlファイルのauth-methodを "JWT"に変更します。

これのオープンソースバージョンを作成することに力を入れていますが、それまではこれが必要です。

関連する問題