伪造3-legged Oauth - 以另一个用户/强制注销登录

时间:2017-03-15 19:04:20

标签: autodesk-forge

我有三条腿工作,我有自己的会话登录/注销管理。

注销后,如果用户想再次登录,我就发送给他 https://developer.api.autodesk.com/authentication/v1/authorize,它直接进入我的回调,前一个用户已经过身份验证,而不是提示新登录。

似乎Autodesk将会话存储为cookie,因此授权后切换用户的唯一方法是清除浏览器缓存/数据

有没有办法强制注销,或类似“以其他用户身份登录”?

这是我第一次做oauth,所以我不确定我错过了什么,但似乎应该有办法强制清除会话并强制重新登录。

修改

让我进一步澄清我想要实现的目标:

这就是我所拥有的。 1.我将用户引导至身份验证页面,将其指向: https://developer.api.autodesk.com/authentication/v1/authorize?response_type=code&client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE&redirect_uri=http%3A%2F%2F{{mycallback}}%2Fcallback%3Ffoo%3Dbar&scope=data:read

  1. 用户使用Autodesk凭据登录

  2. 授权流程重定向是指用户“m​​ycallback.com/callback/?code = {{code}}

  3. 我的后端获取了网址请求中的code参数,并向POST提出了https://developer.api.autodesk.com/authentication/v1/gettoken个请求

  4. 请求返回access_token

  5. 我将access_token存储到用户的会话中,然后使用该会话向API发出下一个请求。

  6. 到目前为止,它按预期工作。现在我想将用户注销,并可能以其他用户身份登录。

    1. 我服务器上的A / logout端点清除用户会话,从而消除了存储的access_token。

    2. 一旦后端意识到没有活动的session / access_token,它会将用户重定向到认证流程(上面的步骤#1)。

    3. 此时,我希望看到另一个Autodesk登录页面,相反,Autodesk的服务器会在没有新登录的情况下自动进行授权,并重定向用户进行回调,然后用户再次登录。

    4. 所以,为了重新解释我的问题,如何更改上面#9的行为,以便用户必须重新输入他的凭证?

      我在开发期间经常遇到这种情况,我使用我的个人帐户登录,然后我退出,我想用我的工作帐户登录。 目前,我能做到这一点的唯一方法是清除浏览器的缓存。 这让我觉得Autodesk正在将会话存储在浏览器中,这就是为什么它在没有获得新凭据的情况下重新进行身份验证的原因。

      dm.autodesk.io上会发生同样的行为 第一次登录后,如果我再次尝试授权,我第二次没有提示登录,而是自动重新登录我登录的第一个用户。

      如果我理解正确发生的事情,似乎API应该有一个我可以在用户注销时强制重新进行身份验证时可以调用的端点。

      有道理吗?

      谢谢!

2 个答案:

答案 0 :(得分:1)

只需加载以下网址:“ https://accounts.autodesk.com/Authentication/LogOut” 这将注销先前的用户会话,并且新用户可以登录。

请参阅此以获取更多详细信息:https://forge.autodesk.com/blog/log-out-forge

答案 1 :(得分:0)

我不确定“我将他发送到https://developer.api.autodesk.com/authentication/v1/authorize是什么意思,但这必须发生在您的服务器上。

https://dm.autodesk.io检查我的示例:允许弹出窗口并单击导航栏中的“用户数据”。登录后,用户会话将安全地存储在服务器上。如果您重新加载页面,它将自动登录。如果再次单击导航栏按钮,它将清除服务器上的会话,如果您重新加载,则不会登录。我猜这是您正在寻找的行为。

此项目的代码位于there。三脚逻辑从there处理,如下所示(node.js):

import Suggestions from "../components/toolbarModal.ios";