2016-02-02 6 views
9

私たちは、ユーザーが電子メール+パスワード(または携帯電話番号)を使用して認証する必要があるiOSアプリケーションを開発しています。私たちのバックエンドは、Akka-Httpを使用した2つのマイクロサービスで構成されています。速く、スケーラブルで、並行している必要があり、認証+認証は複数のサービスにわたって機能するはずです。 私は使用する認証方法を理解しようとしています。 Akka-HTTPは現在、Basic AuthとOAuth2の部分実装を提供しています。Akka-Httpによる認証

最初は基本認証(機能が不十分で機能が不十分すぎる)、Oauth1(複雑すぎる)を考えていたので、OAuth-2.0に移行しました。

次に、OAuth2とOAuth2に欠けている認証メカニズムを提供するOpenID Connectを組み合わせているため、AWS Cognitoを検討しました。多分私達はそれを自分自身を行う必要があり、かつCognitoを使用すると、その希望過剰です - 実際には、我々は、サードパーティの認証プロバイダを必要としないとき - http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html

その後、我々はのOAuth2だけで、第三者を使用して認証のためであることに気づきました私たちのmicroservices外の余分なAPI呼び出しを作成...

だから私はWSSEの仕様を使用して、当社の独自のカスタム認証プロバイダーを作成する方法について少し読み: http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html をそして私はまた、スプレーを使用してこの例を見つけましたが、私はそれがだと確信していますAkka-Httpとの違いはありません: http://danielasfregola.com/2015/06/29/how-to-create-a-spray-custom-authenticator/ これは単純すぎるようであり、トークンのexp虹彩...

私の質問は何ですか?私はどのような方法を選ぶべきですか、どこでその例を見つけることができますか?

私はサークルに入っているように感じています。カスタム認証プロバイダをゼロから作成する必要がありますが、これは意味がありません。結局のところ、ほとんどすべての人が認証を必要とし、標準でなければなりません。

+2

あなたが言及していない特定の要件がない限り、あなたはそれを過度に複雑にしていると思います。私は通常、HTTPSの背後にAPIを置き、モバイルクライアントがユーザー名/電子メールとパスワードで認証し、UUIDのようなトークンを返すことを許可します。私はある種の分散キャッシュ(memcached、ehcache、redisなど)にトークンを格納します。 – expert

+0

マイクロサービスはどこで実行されていますか? – behrooziAWS

+0

あなたのシナリオではOpenID Connectはまったく必要ないと思うので、userId、role、expirationTimestampを含むaccessTokens(jwt.io参照)を発行する単純なOAuth2-Serviceは、サービスが独立してリクエストを認証/ 。少し厄介なのは、リフレッシュトークン処理だけです。 – felixbr

答えて

0

私は最近、SoftwareMillのakka-http-sessionライブラリを使用しており、シンプルで簡単に統合することができました。これは、ケースクラスベースのセッション、JWT、プラグイン可能なストレージを備えたリフレッシュトークン、ヘッダーとCSRFトークン、およびルートで使用するための素敵な簡単な指示文をサポートしています。