如何从API后端到我自己的另一个API后端的身份验证请求吗?
我想提出两个API之间的简单认证请求的每个单独的服务器上,我知道如何使用JSON-Web的令牌或会话进行认证,从前端至后端调用,这是通过将它们存储在浏览器中完成,但我怎么可以让我自己独立的后端服务器,认证之间的认证,从API到另一个API?
我已经试过了,用智威汤逊 - 简单的图书馆,并检查是否解码是有效的,然后我完成的过程中,如果没有的话,我拒绝了,但我不想这样做的,我试过护照文档,但所有我能找到的是它们描述存储在浏览器验证,因为我试图使用读取从我的后端API到我自己的另一个API请求,这不会成为我试图达到的目的这里 ?
回答如下:我不明白的问题
在开始的时候,你必须回答这个问题:你想干什么?您有几种选择:
- 授权完全无需用户的参与:你知道如何从服务器A的用户从服务器B连接到用户,只有服务器进行验证,并说我科瓦尔斯基(如:用于产生JWT的另一种方法)
- 授权与密码:服务器A要求用户输入登录名+密码,然后使用该数据服务器B.
- 服务器A发送回该用户被授权在服务器B和转发的数据返回到服务器A.(例如:的OAuth2)
编辑:
添加1.假设你使用授权JWT,你知道如何产生的第二个服务器,因此:
服务器A知道如何生成JWT的服务器B和做的。
您应该使用一个库,使您可以执行HTTP请求,或者更好地利用从谷歌REST client
一个node-rest-client,如1的结果。
在一个非常类似的方式,在前端的客户端,你建立一个查询并发送。
const getServerBTokenForUser = function(userData) {
return 'Generated JWT token';
}
const Client = require('node-rest-client').Client;
// direct way
let client = new Client();
var args = {
path: { "id": 120, "arg1": "hello", "arg2": "world" },
headers: {'Authorization': 'Bearer '+getServerBTokenForUser(userData) }
};
client.get("http://remote.site/rest/json/${id}/method?arg1=${arg1}&arg2=${arg2}", args,
function (data, response) {
// parsed response body as js object
console.log(data);
// raw response
console.log(response);
});
这是最快的,但不是最好的方法,因为它创造了严格的依赖关系。这是更好地在服务器B,其中其他服务器将被授权(第二授权方法,例如IP或加密的数据)添加的方法,将获得JWT为指定的用户。