在 Play Framework 2.x 中实现摘要式身份验证
Posted
技术标签:
【中文标题】在 Play Framework 2.x 中实现摘要式身份验证【英文标题】:Implementing Digest Authentication in Play Framework 2.x 【发布时间】:2016-10-19 07:12:36 【问题描述】:我在 Play 2.5.x 中实现了一个 RESTful 服务,它需要用 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】:见亚历山大的书Chapter 2。他为此提供了一个工作应用程序,尽管是在一个相当过时的框架版本中。
根据您使用的版本,您将需要使用一些导入(请原谅双关语),因为自从他写这篇文章后它们会发生一些变化,并进行一些重构。
【讨论】:
感谢您的回复。我确实在 Play 1 中看到了这个例子,但 Play 2 的做法完全不同,我无法翻译它。我最终使用 Apache 来代理 Play 请求,并在 Apache 端打开 Digest Authentication。我宁愿让它在 Play 中本地运行,但我现在只需要接受这个解决方法。以上是关于在 Play Framework 2.x 中实现摘要式身份验证的主要内容,如果未能解决你的问题,请参考以下文章
在 Java Play Framework 2.2.x 中启用 CORS
在play framework 1.2.x, class JPABase分析中,为啥要调用saveAndCascade()?
在 Play Framework 1.2.x 中,如何在路径表达式中使用渲染参数值?
默认禁用 play framework 2.x 的 SBT 编译