我們有一個用於我們網站的網絡公共API服務。如何限制只有我們的網站可以訪問我們的API?如何禁止來自公共API的未經身份驗證的請求
網站和API使用相同的域,所以CORS不起作用。 API由NodeJS & Express構建。
我們有一個用於我們網站的網絡公共API服務。如何限制只有我們的網站可以訪問我們的API?如何禁止來自公共API的未經身份驗證的請求
網站和API使用相同的域,所以CORS不起作用。 API由NodeJS & Express構建。
您可以使用稱爲JWT-JSON Web令牌的東西。這是當今用於驗證Web服務的最新最簡單的工具。使用JWT和nodeJs非常簡單。
第1步:安裝JWT for node。
npm install jwt
第2步:創建一個JWT令牌。示例
token = jwt.sign({
url:"www.abc.com",
param2: value2,
param3: value3,
accesstoken: casjzhiy15t4e78y8bnvkds98u2e3098nc1bxu
}, "HASHKEY");
在這裏,參數可以是任何您希望添加到令牌的參數,並且HASHKEY應該是字符串值。而已。現在,您可以將生成的令牌傳遞相同的令牌複製到來自Web的API調用。
第3步:驗證令牌API
var adminToken = req.headers.admintoken;
var decoded = jwt.verify(adminToken, 'HASHKEY');
if(decoded.PARAM1 == "VALUE1"){
//Request is coming from an authenticated source
}
您可以參考官方JWT文檔更詳細的信息。
令牌是由node還是js創建的?如果節點,你如何確保請求的域名是正確的?據我所知,referer頭部很容易被惡搞。 – springuper
在這裏類似的問題可能會有所幫助:http://stackoverflow.com/questions/28136710/determine-if-request-is-local-in-node-js-app – petryuno1
@ petryuno1我不這麼認爲。我們關心的是如何確保請求只來自我們的網站js,而不是本地或不是。 – springuper