2017-08-31 2 views
0

Webソケット接続用にトークンベースの認証を実装したいと思います。スプリングSTOMPトークンベースのセキュリティ

私のバックエンドシステムは、サーバーとマシンがマシンとサーバ間のメッセージの送受信時に認証を実装する方法クライアント、ここにはユーザ認証です。

@Configuration 
@EnableWebSocketMessageBroker 
public class MyConfig extends AbstractWebSocketMessageBrokerConfigurer { 

    @Override 
    public void configureClientInboundChannel(ChannelRegistration registration) { 
    registration.setInterceptors(new ChannelInterceptorAdapter() { 

     @Override 
     public Message<?> preSend(Message<?> message, MessageChannel channel) { 

      StompHeaderAccessor accessor = 
       MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); 

      if (StompCommand.CONNECT.equals(accessor.getCommand())) { 
       String authToken = accessor.getFirstNativeHeader("X-Auth-Token"); 
       log.debug("webSocket token is {}", authToken); 
       Principal user = ... ; // access authentication header(s) 
       accessor.setUser(user); 
      } 

      return message; 
     } 
    }); 
    } 
} 

しかし、私は "Principal user = ...;"でどのように行うのかは全く分かりません。トークンを使ってどのようにPrincipleを得ることができますか?ここではユーザーが存在しない、あなたは次のようになり、何かに似たソリューションが必要な場合がありますように、

+0

あなたがユーザーとの対話なしでサーバーを使用してクライアントを認証し、にトークンを作成する方法を求めていますクライアントで使用しますか?または、すでにトークンを持っていて、トークンからプリンシパルを取得する方法を尋ねていますか? – CamW

+0

ユーザーインタラクションのないサーバーでクライアントを認証し、クライアントで使用するトークンを作成する方法 – Amit

+0

アプリケーションはどのようにクライアントデバイスに接続されますか?ユーザーがダウンロードしてインストールしますか?あなたはクライアントアプリケーションの性質についてより多くの情報を提供できますか? – CamW

答えて

0

あなたは春のセキュリティコンテキスト

SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 
+0

ログインなしで、私は原理を得ることができますか?ここではサーバーとクライアントのみを通信するため、ここにはユーザーはいません。 – Amit

+0

トークンベースの認証があります。 http://websystique.com/spring-security/secure-spring-rest-api-using-oauth2/ログイン/パスワードの代わりに、httpヘッダーにトークンを含めます。 oauth httpの基本的な例のGoogle。これをWebソケットに正しく追加する方法が不明です。 – StanislavL

+0

ありがとう、私はそれを確認します.. – Amit

0

からプリンシパルを取得しようとすることができますねマシンとバックエンドサーバー間の通信のみサウンズIoTソリューションを構築する人が使用します。良い出発点は、OpenID Connectを見ることです。

関連の課題と解決策を議論し、ここで良い記事があります: https://www.gluu.org/blog/oauth2-for-iot/

のOpenID Connectのサイト: http://openid.net/connect/

関連する問題