在StormPath之上添加授权代码授予

时间:2016-05-03 07:13:37

标签: oauth oauth-2.0 authorization stormpath

我需要构建一个OAuth 2.0提供程序,并希望使用StormPath来保留身份并生成访问令牌和刷新令牌。但是,StormPath不支持授权代码授予。因此,我考虑在StormPath之上实施授权代码授权。这是推荐的吗?你会推荐一种更好的方法吗?

您建议使用什么Java库和NodeJS来实现OAuth 2提供程序?

我喜欢Stormpath关于使用JWT的想法,它不需要作为访问令牌持久化(我是否正确?),我想在我的系统中使用它。所以,我是否应该使用Stormpath的CustomData来存储授权代码,但是使用Stormpath API为我生成令牌?或者我是否必须生成自己的令牌,并使用Stormpath的CustomData来存储它们?

2 个答案:

答案 0 :(得分:2)

我是Stormpath的Java Developer Evangelist。

Java SDK通过SAML提供商和社交提供商(如Facebook和Google)支持授权代码授予类型。

更高级别的集成,如Servlet,Spring和Spring Boot,目前通过Stormpath的ID站点服务支持外部提供程序auth流。

我们正在努力将对这些流程的支持直接集成到集成中。您可以跟踪here上的进度。

如果您想实现授权代码授予类型提供程序的功能,我建议您使用Apache Oltu库。您仍然可以使用Stormpath Java SDK将Stormpath与Oltu集成。

答案 1 :(得分:1)

Heyo,我在Stormpath工作,所以我想跳进去。

现在,您可能已经知道,我们仅支持密码授予和客户端凭据授予OAuth2流。我们将来会继续支持其他两个流程(授权代码和隐式),但它有点落后于管道。

如果您想成为您的OWN OAuth2提供商(我假设您应该做什么),并允许其他开发人员构建通过您的网络服务将用户登录到其网站的应用,那么是 - 您确实需要自己支持授权码和/或隐式授权类型。

过去,我和几个人一起实施过这类事情。

通常,我建议使用开源OAuth2服务器库,使用您用于处理授权码/隐式协商的任何语言,然后只需将用户及其令牌存储在Stormpath和用户& #39; s CustomData。

如果您想了解更多详细信息,请展开您的问题,并在下方发表评论,我会更新我的回答以反映更多细节。

<强>更新

关于Java库 - 我已经问过我的一个同事写了我们所有的Java库来评论和推荐ya =)我是Python / Node / Go的家伙,对不起!

现在,关于令牌:

  • Stormpath使用JWT代表OAuth2的访问和刷新令牌。
  • 这些令牌只是&#39;字符串&#39;,但它们必须存储在浏览器中(使用cookie),或存储在客户端设备(如移动电话)上,以便正确使用。所以是的 - 他们必须坚持客户!

我要做的是实现(高级别),这是:

  • 当用户向您的网站注册时,请将其存放在Stormpath中,就像正常一样。
  • 使用Java中的OAuth2提供程序库来处理Web服务器上的授权代码/隐式授权流。这将涉及在数据库中的某处存储授权码。

当用户通过授权码/隐含登录您的应用时,您要做的是:

  1. 使用您所拥有的Java库向用户显示一个屏幕,其中显示除了这些权限之外的其他人吗? yada yada yada ...&#39;。
  2. 用户接受后,将授权码存储在帐户的CustomData中(稍后您需要)。
  3. 当用户使用授权码向您的服务器发送请求时,并希望获得访问令牌时,您需要:

    1. 抓住帐户的CustomData。
    2. 从CustomData中获取授权码,并验证它与用户发送给您的是相同的。
    3. 如果它有效,则使用Java中的JWT库为用户生成JWT访问令牌。我推荐JJWT:https://github.com/jwtk/jjwt
    4. 当用户向您的服务器发送访问令牌以识别自己时,您需要:

      希望这有意义!

      这可能听起来像很多工作,但实际上,这应该很简单。您真的只需要OAuth2库来帮助您正确处理OAuth2 POST请求数据,并提供以下帮助:

      • 定义权限(范围)。