Live SDK Client Secret необязательное требование

Почему требуется секрет клиента, но не совсем, если вы просто используете клиент javascript.

Это не логично. Может кто-нибудь объяснить мне, почему секрет требуется при непосредственном вызове REST?

API javascript не требует "секрет клиента":

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 ответ

Решение

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

Необходимые. Определяет области, на которые соглашается пользователь, который выполняет вход. Для отдельной области используйте этот формат: 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.

Другие вопросы по тегам