2016-10-19 7 views
0

У меня есть служба RESTful, которую я реализую в Play 2.5.x, которая должна заменить существующий сервер, который реализует аутентификацию с помощью Digest. У кого-нибудь есть учебник или пример того, как реализовать это с Play?Реализация аутентификации дайджеста в Play Framework 2.x

В основном клиент говорит что-то вроде:

POST /tui/testing/v1/ HTTP/1.1 
Host: dev01.funkyhost.org 
User-Agent: curl/7.43.0 
Accept: */* 
Content-Length: 0 

сервер должен ответить на запрос с:

HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Digest realm="SomeFunkyRealm", nonce="ST8RrC0/BQA=9f0890ed9f1603989a4526ce2d27f4415fef88c6", algorithm=MD5, qop="auth" 

и клиент ответит что-то вроде:

POST /tui/testing/v1/ HTTP/1.1 
Host: dev01.funkyhost.org 
Authorization: Digest username="testing", realm="SomeFunkyRealm", nonce="7VKfAjI/BQA=5a86a2b75bb70c9aa0723b8eaed002d919bd3039", 
uri="/tui/testing/v1/", cnonce="MWE4OThmYTE2NTFkZTg2YjYyYzhhMTA1OWVhMzIxODU=", nc=00000001, qop=auth, response="722260be15837dead193763511604850", algorithm="MD5" 
User-Agent: curl/7.43.0 
Accept: */* 
Content-Length: 117938 
Expect: 100-continue 
.... 

Спасибо заранее!

ответ

0

См. Chapter 2 книги Александра. Он предоставляет рабочее приложение для этого, хотя и в довольно датированной версии фреймворка.

В зависимости от того, какую версию вы используете, вам нужно будет сыграть (простить каламбур) с некоторыми из импортных товаров, так как они немного сдвинутся с тех пор, как он это написал, и сделайте немного рефакторинга.

+0

Спасибо за ответ. Я видел этот пример в Play 1, но Play 2 делает вещи настолько радикально разными, что я не смог их перевести. Я закончил использование Apache для проксирования запросов к Play и включил проверку дайджеста на стороне Apache. Я предпочел бы, чтобы он работал изначально в Play, но мне просто нужно принять это обходное решение. – Uberbug