使用akka-http执行OAuth2身份验证的最佳方式是什么?

19
Akka HTTP和Spray提供了一个authenticateOAuth2指令,但是它们的文档说明

该指令并未实现完整的OAuth2协议,而是通过从HTTP标头中提取所需的令牌来实现协议。

我也没有找到任何可以为Akka HTTP或Spray实现OAuth2的库。我是否遗漏了什么,还是这些库当前的状态就是如此?

实际上,针对此问题的库非常少。您是否查看过以下任一链接? https://github.com/hasanozgan/spray-oauth 或 https://github.com/nulab/scala-oauth2-provider - maya.js
@mayacr86 我参考了这个项目 https://github.com/nulab/scala-oauth2-provider。但是我找不到Main方法、Web服务器启动代码和端点(routes)代码。我请求您提供这些代码(Main方法、Web服务器启动代码、端点(routes)代码以及运行该项目的curl命令)。 - user123456
1个回答

3
我认为最大的问题在于OAuth2本身并没有告诉你实现细节是什么样子。
引用 RFC
令牌可以表示用于检索授权信息的标识符,也可以以可验证的方式自包含授权信息(即,由一些数据和签名组成的令牌字符串)。客户端使用令牌可能需要超出此规范范围的其他身份验证凭据。
访问令牌可以基于资源服务器安全要求具有不同的格式、结构和利用方法(例如,加密属性)。访问令牌属性和用于访问受保护资源的方法超出了本规范的范围,并由伴随规范(如[RFC6750])定义。
例如,您可以使用 JWT验证请求,也可以仅将令牌用作标识符,并询问服务该令牌是否允许访问该资源。
根据您的OAuth2提供商,实现可能会有所不同,因此我猜测该框架只能为您提供常见功能(提取令牌),否则它将不得不实现所有可能的OAuth2实现,这似乎在此时不可行。
我个人过去使用过pauldijou/jwt-scala,您可能想看一下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接