如何将用户凭证发布到外部域?

时间:2020-06-01 10:59:38

标签: javascript html

我正在做网络编程,在实现登录到外部域时遇到一些麻烦。

我要构建的是一个Web应用程序,它可以帮助用户从我的网站(mysite.com)登录到多个域。 这就是我的Web应用程序的工作方式。

  1. 我的网站(mysite.com)包含其他域的用户凭据(ID和密码)
  2. 当用户登录到我的网站(mysite.com)时,将从服务器提供用户的凭据
  3. 通过单击域(例如thenounproject.com)的图标,将在新选项卡上打开域,用户已登录

要实现此目的,我调查并检查了许多选项,但仍然遇到错误。

  1. 将凭证表单发布到外部域
    <form method="POST" action="https://thenounproject.com/accounts/login/" target="_blank">
       <input type="text" name="login" required>
       <input type="password" name="password" required>
       <button type="submit">Login</button>
    </form>

URL(https://thenounproject.com/accounts/login/)是域(https://thenounproject.com/)的登录页面,输入名称(登录名/密码)与将POSTS URL到其URL的参数名称相同自己的域服务器。

但是我收到HTTP 403错误,所以没有解决。

  1. 将凭据嵌入url(HTTP GET)

<button type="button" onclick="window.open('https://username:password@thenounproject.com/accounts/login/')">

但是上面的代码也不起作用,它只是打开url(https://thenounproject.com/accounts/login/)而登录不起作用。

有没有办法实现这一目标?

1 个答案:

答案 0 :(得分:0)

快速浏览一下名词项目,他们在登录时使用了CSRF令牌。它们的目的是防止您完全按照自己的描述进行操作。如果您不知道这些是什么以及为什么重要,那么在继续之前,请仔细阅读它们以了解您的项目,这一点很重要

https://owasp.org/www-community/attacks/csrf

要按照说明进行这项工作,您需要一些可以操纵浏览器cookie存储的东西(例如开发自定义浏览器扩展)。首先,您需要建立一个会话以获取令牌(登录页面的GET应该呈现该令牌)。要按照说明进行工作,您需要将其添加到名词项目所在域的浏览器的cookie中,由于它带来的安全风险,浏览器会积极阻止它。