2015-05-15 2 views
2

Я пишу Open ID Connect Provider в Rails, в основном рефакторинг этого примера Here.Open ID Connect Provider - Персидский идентификационный токен?

Мой вопрос - действительно ли идентификаторы токенов должны быть сохранены на сервере вообще? Если я просто подписываю идентификатор ID и отправляю его в RP, не могу ли я просто сгенерировать идентификатор ID, когда RP запрашивает его (например, с типом ответа idtoken в запросе), и не беспокойтесь о его сохранении в база данных на моем конце? В основном используйте обычный старый объект ruby ​​для IDToken, а не объект ActiveModel.

Мне кажется, что как только RP получает идентификатор ID, он использует его для получения информации об Владельце ресурсов и не отправит его обратно поставщику, как токен доступа. Или я что-то пропущу здесь, и я ДОЛЖЕН сохранять идентификационные токены в db провайдера?

Я знаю, Nat Sakimura объясняет here, что в code потоке OAuth/РСИНЕ, вы должны сохранить идентификатор токен при передаче коды авторизации обратно на RP, но я чувствую, что я мог бы просто создать маркер, когда они посылают код назад и попросите токен доступа (вместе с токеном id).

ответ

1

В принципе вам не нужно сразу создавать и хранить id_token, но во многих случаях OP должен сохранять информацию о запросе - например, запрашиваемые области и запрошенные заявки - для создания требуемого id_token, поэтому имеет смысл сразу же создать токен и сохранить его как автономный блок.

Обратите внимание, что вам также необходимо сохранить client_id и redirect_uri, чтобы иметь возможность проверить его при замене code, и необязательно nonce.

Но на самом деле нет необходимости в создании id_token сразу же, как вы предлагаете.

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