Desire2Learn Valence API неинтерактивная аутентификация
В API Desire2Learn Valence есть ли неинтерактивный поток аутентификации для серверных приложений? Документация Valence предполагает, что любое аутентифицирующее приложение будет интерактивным клиентским процессом.
3 ответа
Мы фактически достигли этого, не входя в систему в интерактивном режиме. Если вы попробуете этот маршрут, убедитесь, что вы захватили файлы cookie d2lSecureSessionVal, d2lSessionVal и Login и добавили их в ваши последующие запросы.
Запрос 1: 1 > POST http{s}://elearning.test.masked.edu/d2l/lp/auth/login/login.d2l 1 > Тип содержимого: application/x-www-form-urlencoded userName={ Ваше имя пользователя}& пароль = {Ваш пароль}
Ответ 1:
1 < Set-Cookie: LoginKey=; expires=Sat, 01-Jan-2000 05:00:00 GMT; path=/
1 < Set-Cookie: d2lSecureSessionVal=masked; path=/; HttpOnly <-- grab this
1 < Set-Cookie: Login=true; path=/ <-- grab this
1 < Set-Cookie: d2lSessionVal=masked; path=/ <-- grab this
Обратите внимание, что по этому запросу цель не имеет большого значения. Запрос 2: 2 > GET http{s}://elearning.test.masked.edu:443/d2l/auth/api/token? X_a=ZNsxGYZuSmasked&x_b=7jkhCKfEmaked&x_target=https%3A%2F%2Fwww.maked.edu 2 > Cookie: d2lSecureSessionVal=masked; d2lSessionVal= замаскированный; Вход = истина;
Он будет пытаться перенаправить вас на целевой сайт. Не обращайте внимания на перенаправление, x_a - это то, что вам действительно нужно.
Ответ 2:
2 < 302
2 < X-AspNet-Version: 2.0.50727
2 < Date: Tue, 09 Oct 2012 14:03:45 GMT
2 < Content-Length: 248
2 < X-XSS-Protection: 0
2 < Location: http{s}://www.masked.edu?x_a=DxHmasked&x_b=aQVkg-7jkhCKfEmaked&x_c=IfLBcKYFf8masked
2 < Set-Cookie: TS50cdf6=masked; Path=/
2 < Content-Type: text/html; charset=utf-8
2 < X-Powered-By: ASP.NET
2 < Cache-Control: private
2 <
Возьмите x_a из этого ответа и используйте его как x_b в своих запросах.
Первый раз - ошибка, поскольку есть страница, на которой отображается флажок, разрешающий запросы от определенного хоста. Мы просто захватили запрос токена аутентификации и вставили его в браузер. После того, как флажок всегда позволяет, все работает просто отлично.
Также обратите внимание, что токен аутентификации иногда истекает. Убедитесь, что вы написали для этого код и повторите проверку подлинности, когда это произойдет.
Я использовал пример кода для начала работы из примера кода PHP, который показывает ключи пользователя в вашем браузере после входа в систему, чтобы получить ключи для моей "учетной записи службы", которую я создал.
Затем я поместил их в класс PHP, который я мог бы использовать повторно для установления соединений. Так что в моем коде я могу позвонить
$authcontext = d2l::connect();
Это действительно работает как шарм.
Это в некоторой степени связано с вопросом, расположенным здесь:
Метод аутентификации для REST API Desire2Learn против SOAP
API-интерфейсы Valence требуют, чтобы был выполнен интерактивный шаг аутентификации, но это можно сделать во время установки для неинтерактивного приложения. Результатом этого процесса являются ключи, которые можно использовать "надолго".
Для некоторых версий и уровней пакетов обновления это было 30 дней, но можно сделать так, чтобы оно не истекло. "Не истекает" - это ожидаемое значение по умолчанию в будущем, но, если для вашего экземпляра все еще установлено значение 30 дней, вы можете сделать запрос в службу поддержки, чтобы изменить его.