2016-11-15 27 views
1

我們有一個用於我們網站的網絡公共API服務。如何限制只有我們的網站可以訪問我們的API?如何禁止來自公共API的未經身份驗證的請求

網站和API使用相同的域,所以CORS不起作用。 API由NodeJS & Express構建。

+0

在這裏類似的問題可能會有所幫助:http://stackoverflow.com/questions/28136710/determine-if-request-is-local-in-node-js-app – petryuno1

+0

@ petryuno1我不這麼認爲。我們關心的是如何確保請求只來自我們的網站js,而不是本地或不是。 – springuper

回答

2

您可以使用稱爲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文檔更詳細的信息。

+0

令牌是由node還是js創建的?如果節點,你如何確保請求的域名是正確的?據我所知,referer頭部很容易被惡搞。 – springuper

相關問題