Live SDK客户端秘密可选要求

时间:2014-10-11 18:48:32

标签: javascript security rest live-sdk onedrive

为什么需要Client Secret,但如果你只是使用javascript客户端则不然。

这不符合逻辑。有人可以向我解释,为什么直接进行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的连接可以使用比直接连接到服务更少的安全性约束?所以它看起来像“任选所需”,取决于上下文,这使它成为我的矛盾,但可能是我错过了什么。

1 个答案:

答案 0 :(得分:0)

可能是因为服务器端代码为您提供了更多访问权限,例如:

  

必需。指定登录用户的范围   同意。对于单个范围,请使用以下格式:scope:“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信息中心中将应用配置为桌面/移动应用来解决此限制。