2014-10-11 37 views
0

爲什麼要求客戶端密鑰,但不是真的如果你只是使用JavaScript客戶端。實時SDK客戶端密鑰可選要求

這是不合邏輯的。有人可以向我解釋,爲什麼直接進行REST呼叫時需要祕密?

JavaScript API的不需要 「客戶端祕密」:

WL.init({ 
    client_id: APP_CLIENT_ID, 
    redirect_uri: REDIRECT_URL, 
    scope: "wl.signin", 
    response_type: "token" 
}); 

但是,如果你想使REST直接調用它的需要:

POST https://login.live.com/oauth20_token.srf 

Content-type: application/x-www-form-urlencoded 

client_id=CLIENT_ID&redirect_uri=REDIRECT_URL&client_secret=CLIENT_SECRET&code=AUTHORIZATION_CODE&grant_type=authorization_code 

代碼來自:http://msdn.microsoft.com/en-us/library/hh243641.aspx

我假設客戶端的祕密是一個安全功能,如果是這樣的話,爲什麼通過js API的連接可以用比直接連接到服務器的安全約束更少冰?所以它看起來像「可選需要」取決於上下文,這使得它對我來說是一種矛盾,但可能是我錯過了一些東西。

回答

0

可能是因爲服務器端代碼爲您提供更多的接入,如:

必需。指定登錄 的用戶同意的範圍。對於單一範圍,請使用以下格式:範圍:「wl.signin」。對於 多個作用域,請使用以下格式:作用域:[「wl.signin」,「wl.basic」]。如果 沒有提供範圍,則使用WL.init的範圍值。如果在WL.init或WL.login中未提供範圍 ,則WL.login返回錯誤。註釋 WL.login可以請求「wl.offline_access」作用域,但它需要一個 服務器端實現,並且WL.init函數必須將其 response_type屬性設置爲「code」。

基本上,客戶端祕密爲您提供更高的安全許可,因此您可以訪問額外的東西,否則您無法做到。

注意:您可以通過將您的應用程序作爲桌面/移動應用程序置於您的實時sdk儀表板中來避開此限制。

相關問題