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.