JWT:在多域级别上处理令牌身份验证

时间:2017-02-03 10:14:34

标签: javascript security polymer token jwt

目前我遇到以下问题:

我正在使用独立的登录视图构建应用程序。 我们假设它们都运行在不同的域上。我的登录视图与发出JWT令牌的服务器上的REST服务进行通信。

使用此发布的令牌,用户现在应该能够查看(转发)应用程序。但是这个应用程序 - 如上所述 - 运行在另一个域(或者可能是子域)上。

在我看来,我尝试了以下内容:

  1. 令牌由服务器发出。散列存储在数据库中,并向用户发出散列。散列通过URL传输到应用程序,应用程序检查散列。

  2. 令牌由服务器发出。令牌被转移给用户。当用户现在打开应用程序(或转发给...)时,令牌也应该转移到那里。我不知道怎么做......

  3. 我知道,两者都不是理想的方式。但我真的不知道如何实现这一目标......

    我希望有人能帮助我思考? 如果有什么不清楚,只需评论。

    提前致谢!

1 个答案:

答案 0 :(得分:1)

Facebook,Twitter,Google等通过重定向(302重定向请求)提供OAuth。基本上,如果用户有一个有效的令牌一切正常,你的应用就会启动,否则它会从身份提供商(例如谷歌)打开登录页面,如果登录成功,则返回令牌。

此图显示了一般步骤:

https://www.soapui.org/soapui/media/images/stories/oauth2/oauth2flow.png

希望这有帮助。

假设您在两个不同的域中有两个服务。一个是您的身份提供者,它生成令牌并持有令牌< - >用户分配(我们称之为:idp.my.company)。另一个是做任务但需要通过idp.my.company登录的应用程序(我们称之为app.my.company)。

您有两种情况:  1.登录前没有获得令牌。  2.使用令牌登录。

  1. 请求GET:app.my.company

  2. 回复302:已移至:idp.my.company

  3. [由于重定向而自动发生] GET:idp.my.company / login.html。

  4. 回复200 OK:idp.my.company /login.html

    • 用户现在将看到您的IDP服务的登录页面并执行登录。
  5. 请求POST:idp.my.company /login.html(或其他)

    • 用户发布其凭据以获取令牌
  6. 响应302重定向:如果登录成功,则返回令牌,然后重定向到您之前提供的原始站点(app.my.company)。

  7. 请求GET:app.my.company/afterlogin.html

    • 标题包含有效标记
  8. 响应200确定:现在app.my.company服务需要检查令牌是否有效,如果是,则返回200 Ok,否则再次重定向到IDP(从步骤2开始)。

    < / LI>

    这应该是它。可能存在错误,但您应该对过程有一致的了解,并掌握如何实现它。这些步骤包括方案1和2。

相关问题