#java #playframework #digest-authentication
#java #playframework #дайджест-аутентификация
Вопрос:
У меня есть служба RESTful, которую я внедряю в Play 2.5.x, которая должна заменить существующий сервер, который реализует аутентификацию с помощью Digest. У кого-нибудь есть руководство или пример того, как реализовать это с помощью Play?
В основном клиент говорит что-то вроде:
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
....
Заранее спасибо!
Ответ №1:
Смотрите главу 2 книги Александра. Он предоставляет рабочее приложение для этого, хотя и в довольно устаревшей версии фреймворка.
В зависимости от того, какую версию вы используете, вам нужно будет поиграть (простите за каламбур) с некоторыми импортируемыми файлами, поскольку они немного изменились с тех пор, как он написал это, и провести небольшой рефакторинг.
Комментарии:
1. Спасибо за ответ. Я действительно видел этот пример в игре 1, но в игре 2 все настолько радикально отличается, что я не смог перевести его заново. В итоге я использовал Apache для проксирования запросов на воспроизведение и вместо этого включил дайджест-аутентификацию на стороне Apache. Я бы предпочел, чтобы это работало изначально в игре, но пока мне просто нужно принять это обходное решение.