Токен обновления в настольном приложении для потока кода авторизации OAuth2

Я хочу использовать API в своем приложении .net WinForms, которое закрыто токеном JWT. Такие токены можно получить от поставщика удостоверений с помощью Authorization Code Flow + PKCE. Я работал с таким потоком раньше в веб-приложении, и я знаю, как запрашивать код, обменивать его на токен доступа, и я использовал метод автоматического обновления для обновления токенов доступа. Для моего clientId я не могу использовать токены обновления. Итак, я немного запутался, как реализовать обновление токенов в приложении Winforms. Мне определенно нужно открыть страницу входа, чтобы клиент мог ввести учетные данные. Тогда я думаю, мне нужно поймать код из URL-адреса перенаправления. Кажется, мне нужно использовать петлевой IP-адрес в качестве URL-адреса перенаправления и запроса перехвата в приложении. Но как настроить процесс обновления я понятия не имею. Помогите советом или добавьте ссылки на примеры.

1 ответ

Для настольного приложения следует следовать рекомендациям RFC8252. Без обновления токена у вас возникнут проблемы с удобством использования. Например, срок действия токена доступа истекает через 15 или 30 минут, после чего пользователь повторно открывает системный браузер.

Это может быть хорошо для приложения с высоким уровнем безопасности, например для банковского дела, но для большинства приложений это не то, что вам нужно. Альтернативы, такие как токены доступа с длительным сроком действия, плохи с точки зрения безопасности, поскольку долгосрочное значение затем отображается при каждом запросе API.

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

Итак, у вас есть эти основные варианты, и, возможно, вы сможете объяснить заинтересованным сторонам компромиссы. Вы не сможете реализовать обходной путь в коде:

  • Нет токена обновления и неоптимальное удобство использования
  • Используется токен обновления, поэтому в общедоступном клиенте используются более долговечные учетные данные API.

Блокировка того, что можно сделать с помощью маркера доступа, выданного настольному приложению, — с использованием областей и утверждений — обычно является основным средством смягчения проблем безопасности такого типа.

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