Данный сервис может быть использован для как средство аутентификации студентов МГТУ Станкин и получения их персональных данных, таких как имя, фамилия, номер студенческого билета, группы итп посредством протокола OAuth 2.0
Иными словами, вы можете сделать кнопку Войти через модульный журнал на своем сервисе, и получить с разрешения студента информацию о нем.
На данный момент автоматическая регистрация сервисов не реализована.
Если вы хотите добавить возможность аутентификации на вашем сервисе через модульный журнал, то напишите мне на почту
[email protected] или заведите тикет и сообщите название сервиса, электронную почту для связи и redirect_uri
(можно несколько),
на который будет перенаправляться пользователь после аутентификации и авторизации.
В ответ вы получите client_id
и client_secret
для вашего сервиса.
На вашем сайте вы должны разместить ссылку вида:
https://lk.stankin.ru/webapi/oauth/authorize?response_type=code&client_id=[client_id]&redirect_uri=[redirect_uri]
где
[client_id]
- вашclient_id
[redirect_uri]
- один из присланных вамиredirect_uri
также вы можете указать параметры force_confirm=yes
для принудительного запроса согласия пользователя, даже если он
уже дал его ранее, и state=[произвольная строка]
- как дополнительное поле для идентификации пользователя.
При клике на эту ссылку пользователь будет перенаправлен на страницу запроса разрешения передачи данных вашему сервису.
В случае согласия пользователя пользователь будет перенаправлен на указанный redirect_uri
при этом к строке запроса
будет добавлен параметер code
(например http://your.site.com/token?code=1234
), при помощи которого вы сможете получить
информацию о пользователе.
В случае отказа пользователя (или какой-то другой ошибки) вместо параметра code
будет передан параметр error
с текстом ошибки.
Получив code
ваш сервис может в течении 5 минут обменять его на постоянный token
и получить данные пользователя, отправив
POST-запрос вида:
POST /webapi/oauth/token HTTP/1.1
Host: lk.stankin.ru
Content-type: application/x-www-form-urlencoded
Content-Length: [длина тела запроса]
code=[полученный code]&client_id=[ваш client_id]&client_secret=[ваш client_secret]
В ответ вы получите JSON вида:
{
"access_token": "647801fa-bd52-4d85-87d1-01e80e00b380",
"token_type": "bearer",
"userInfo": {
"name": "Иван",
"surname": "Иванов",
"patronym": "Иванлыич",
"stgroup": "ИДБ-00-00",
"cardid": "1234567"
}
}
Этот json вы будете получить каждый раз, когда пользователь будет проходить аутентификацию по этой процедуре. Значение
access_token
может меняться со временем, например если пользователь отзовет право вашего сервиса.
Таким образом вы можете аутентифицировать пользователя на своем сервисе через модульный журнал.
В настоящее время полученный токен особой пользы не приносит, так как всё что можно при помощи него сделать, это отправить запрос
https://lk.stankin.ru/webapi/user/info
добавив заголовкок запроса Authorization: Bearer [ваш токен]
.
В ответ вы получите всё тот же JSON:
{
"name": "Иван",
"surname": "Иванов",
"patronym": "Иванлыич",
"stgroup": "ИДБ-00-00",
"cardid": "1234567"
}
В дальнейшем возможно добавление других функций.
Свои замечания и пожелания этот счет вы всегда можете оставить в треккере.