目前我遇到以下问题:
我正在使用独立的登录视图构建应用程序。 我们假设它们都运行在不同的域上。我的登录视图与发出JWT令牌的服务器上的REST服务进行通信。
使用此发布的令牌,用户现在应该能够查看(转发)应用程序。但是这个应用程序 - 如上所述 - 运行在另一个域(或者可能是子域)上。
在我看来,我尝试了以下内容:
令牌由服务器发出。散列存储在数据库中,并向用户发出散列。散列通过URL传输到应用程序,应用程序检查散列。
令牌由服务器发出。令牌被转移给用户。当用户现在打开应用程序(或转发给...)时,令牌也应该转移到那里。我不知道怎么做......
我知道,两者都不是理想的方式。但我真的不知道如何实现这一目标......
我希望有人能帮助我思考? 如果有什么不清楚,只需评论。
提前致谢!
答案 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.使用令牌登录。
请求GET:app.my.company
回复302:已移至:idp.my.company
[由于重定向而自动发生] GET:idp.my.company / login.html。
回复200 OK:idp.my.company /login.html
请求POST:idp.my.company /login.html(或其他)
响应302重定向:如果登录成功,则返回令牌,然后重定向到您之前提供的原始站点(app.my.company)。
请求GET:app.my.company/afterlogin.html
响应200确定:现在app.my.company服务需要检查令牌是否有效,如果是,则返回200 Ok,否则再次重定向到IDP(从步骤2开始)。
< / LI> 醇>这应该是它。可能存在错误,但您应该对过程有一致的了解,并掌握如何实现它。这些步骤包括方案1和2。