2014-10-11 3 views
0

Почему требуется секретная информация клиента, но на самом деле, если вы просто используете клиент javascript.Live 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

Вероятно потому, что код на стороне сервера предоставляет вам больше доступа, такие как:

Required. Указывает области, к которым согласен пользователь, который подписывает . Для одной области применения используйте этот формат: scope: «wl.signin». Для нескольких областей используйте этот формат: scope: ["wl.signin", "wl.basic"]. Если не указана область, используется значение области WL.init. Если в WL.init или WL.login не указана область , WL.login возвращает ошибку. Примечание WL.login может запрашивать область «wl.offline_access», но для нее требуется реализация на стороне сервера , а функция WL.init должна установить свой атрибут response_type в «code».

В основном секрет клиента дает вам более высокий уровень безопасности, поэтому вы можете получить доступ к дополнительным материалам, которые вы не можете сделать иначе.

Примечание. Возможно, вы сможете обойти это ограничение, предоставив свое приложение в качестве настольного/мобильного приложения на панели управления в реальном времени sdk.

Смежные вопросы