2016-02-02 56 views
9

Kullanıcının e-posta + şifresi (veya cep telefonu numarası) kullanarak kimlik doğrulaması yapması gereken bir iOS uygulaması geliştiriyoruz. Bizim arka ucumuz Akka-Http kullanarak bir çift microservices yapılır. Hızlı, ölçeklenebilir, eş zamanlı olmalı ve kimlik doğrulama + yetkilendirmenin birden çok hizmetimizde çalışması gerekir. Kullanılacak kimlik doğrulama yöntemini bulmaya çalışıyorum. Akka-HTTP şu anda Temel Kimlik Doğrulama ve OAuth2'nin kısmi bir uygulamasını sunuyor.Akka-Http ile Kimlik Doğrulaması

İlk başta Temel kimlik doğrulamayı (çok basit ve yeterli işlevsellik), Oauth1 (çok karmaşık) düşünüyorduk, bu yüzden standart bir tür olduğu için OAuth-2.0'a geçtik.

O zaman OAuth2'nin OAuth2'nin eksik olduğu kimlik doğrulama mekanizmasını veren OpenID Connect ve Oauth-2.0'ı birleştirdiği için AWS Cognito'yu düşündük. Aslında üçüncü bir taraf kimlik sağlayıcı gerekmediğinde - - http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html

Sonra OAuth2 sadece üçüncü parti kullanarak kimlik doğrulaması için olduğunu fark belki biz kendimizi bunu gerekir ve Cognito kullanarak o olur bir overkill

yüzden WSSE özelliklerini kullanarak, kendi özel kimlik doğrulama sağlayıcısı oluşturma hakkında biraz oku ... bizim microservices dışında ekstra aPI çağrıları oluşturmak: http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html Ve ayrıca Sprey kullanılarak bu örneği buldum, ama eminim Akka-Http'den farklı değil: http://danielasfregola.com/2015/06/29/how-to-create-a-spray-custom-authenticator/ Çok basit görünüyor ve belirteç belirtisi yok iration ...

Benim sorum şu ki, bir şey mi özlüyorum? Hangi yöntemi seçtim ve bunun için örnekleri nerede bulabilirim?

Çevrelerinde olduğumu hissediyorum, kendi özel kimlik doğrulama sağlayıcımızı sıfırdan yazmamız gerekecek, ki bu mantıklı değil. Hemen hemen herkesin kimlik doğrulama ihtiyacı var ve bir standart olmalı.

+2

Açıkçası, daha önce bahsetmediğiniz özel gereksinimler olmadıkça, bunu fazlasıyla karmaşık bir hale getirdiğinizi düşünüyorum. Normalde API'yi HTTPS'nin arkasına koyarım, mobil müşterinin kullanıcı adı/e-posta ve şifre ile kimlik doğrulamasına izin ver ve UUID benzeri belirteci döndür. Jetonları bir çeşit dağıtılmış önbellek (memcached, ehcache, redis veya benzeri) olarak depolarım. – expert

+0

Mikroservisleriniz nerede çalışıyor? – behrooziAWS

+0

Senaryoda OpenID Connect'e ihtiyacınız olduğunu düşünmüyorum, bu yüzden userId, role ve expirationTimestamp dahil accessTokens (bkz. Jwt.io) veren basit bir OAuth2-Service, hizmetlerin bağımsız olarak istekleri kimlik doğrulaması/yetkilendirmesi için ihtiyaç duyduğu her şey olmalıdır . Biraz zor bir imo olan tek şey yenileme-token işlemidir. – felixbr

cevap

0

Kısa bir süre önce SoftwareMill's akka-http-session kütüphanesini kullandım ve kullanımı basit ve basittir. Case sınıf tabanlı oturumlar, JWT'ler, başlıklar ve CSRF tokensleri ile bağlantılarda kullanmak için bazı güzel basit direktifler kullanılarak, takılabilir depolama özellikli yenileme simgeleri desteği vardır.

İlgili konular