首页 文章

如何将JWT令牌发送到外部URL?

提问于
浏览
0

我有两个REST endpoints .

  • accounts.mydomain.com/login - 身份提供程序,一旦用户使用其用户名/密码进行身份验证,就会将JWT令牌作为响应发送 .

  • api.mydomain.com/users - 接受上述JWT标记为 Authorization 标头,验证它并在标记有效时将用户JSON作为响应发送 .

我使用Angular2创建了我的UI

  • myservice.mydomain.com 的登录页面,用于捕获用户名/密码, POST 是其余 endpoints accounts.mydomain.com/login 的凭据,并获取JWT令牌作为响应 . 收到JWT令牌后,将显示下面的页面 .

  • users.mydomain.com 的用户主页 . 仅当针对其余 endpoints api.mydomain.com/users 验证上述JWT令牌时,才应显示此页面 .

我虽然我会使用 window.location.href 从登录页面的响应发送JWT令牌到 users.mydomain.com?t=JWTtoken 并从查询参数获取令牌,将其作为 Authorization 标头发送到 api.mydomain.com/users .

我知道,如果JWT令牌大小增加,在查询参数中发送令牌并不好 .

有谁能建议我更好的方法来达到上述要求?是否可以在标头中发送JWT令牌而不是查询参数?

1 回答

  • 2

    绝对可以将JWT令牌作为标头发送 . 在 Angular2 中,您可以在请求API上添加一组 Headers ,以便进行扩充 . 您似乎没有在_1783429中进行拦截,但您可以随时在HTTP客户端上编写自己的包装器来存储令牌并将其附加到标头中的每个请求 .

    这实际上是将JWT令牌或任何其他令牌传递给API的最常见方式(您也可以将其发送到cookie中,例如但我更喜欢标头,出于各种原因,如可维护性和安全性) .

    这是你设置 Headers 的方式:

    import {Headers} from 'angular2/http';
    var headers = new Headers();
    headers.append(headerName, value);
    
    // HTTP POST using these headers
    this.http.post(url, data, {
      headers: headers
    })
    

    您可以在here中阅读有关包装器的更多信息 .

相关问题