Как лучше обновлять токен доступа для API, если вы только что получили ClientId и ClientSecret и НЕТ токена обновления? - PullRequest
0 голосов
/ 22 июня 2019

Я провел последние пару недель или около того, просматривая документы и руководства .Net Core, и сейчас я создаю свое первое веб-приложение .Net Core.Таким образом, приложение в основном состоит из извлечения данных из онлайн-API на основе параметров поиска.Ничего впечатляющего.Теперь моя проблема заключается в OAuth2, который API использует для ограничения доступа к своим данным.Я впервые сталкиваюсь с OAuth2 и работаю с удаленными API в целом, так что, как вы могли догадаться, я провел последние пару дней, просматривая документацию OAuth и изучая использование API.API, который я использую для извлечения данных, - это API-интерфейс Amadeus, а продолжительность выданного мне токена доступа составляет 30 минут.Поэтому после нескольких дней стука в голове и попытки обновить токен доступа всеми различными способами, я решил, что Amadeus даже не предоставляет обновленный токен, и мне следует в основном использовать ClientId и ClientSecret для обновления токена доступа, когда он истекает, иликогда это близко к истечению срока.Мое приложение не имеет никакой аутентификации пользователя и просто служит для получения данных от API.

Итак, мои вопросы:

1) Как лучше обновлять токен доступа, если вытолько что предоставил ClientId и ClientSecret?

2) Есть ли способ автоматизировать этот процесс, используя некоторые данные в памяти и не полагаясь на ответ 401, чтобы проверить, не истек ли мой токен?

Мое предположениепытался использовать Промежуточное программное обеспечение для исходящих запросов , чтобы попытаться получить доступ к конкретным данным запроса или данным, хранящимся в памяти, например, например, когда был сгенерирован последний токен доступа, и затем решить, следует ли мне обновить его или нет, перед отправкойзапрос.Моя проблема в том, что я не очень хорошо разбираюсь в этом, и я не уверен, смогу ли я получить доступ к своему экземпляру HttpClient внутри этого промежуточного программного обеспечения и обновить его токен с помощью метода HttpClient.SetBearerToken ().Я также пытался использовать HttpContext, но я не совсем уверен, как он работает за кулисами, и документация Microsoft, которую я нашел, довольно скудна.Таким образом, другой вопрос будет:

3) Могу ли я передать HttpContext пользовательскому промежуточному программному обеспечению, как в в этом случае , но использовать его для переопределения метода, подобного SendAsync (), а затем в сочетании с этим,основываясь на информации, которую я собираю, используйте HttpClient.SetBearerToken () в том же промежуточном программном обеспечении для обновления моего временного экземпляра HttpClient, который генерируется HttpClientFactory?

Любая помощь или совет очень важны!

1 Ответ

0 голосов
/ 23 июня 2019

1) Как лучше обновлять токен доступа, если вы только что получили ClientId и ClientSecret?

Невозможно обновить токен доступа без токена обновления.Единственный вариант - создать новый токен доступа, что означает возврат через поток авторизации OAuth.

2) Есть ли способ автоматизировать этот процесс, используя некоторые данные в памяти и не полагаясь на 401?ответ, чтобы проверить, не истек ли мой токен?

Возможно, вы сможете взломать память машины.Однако, используя поддерживаемые методы, которые продолжат работать сегодня и завтра, ответ будет: нет.

3) Могу ли я передать HttpContext в пользовательское промежуточное ПО, как в этом случае, но использовать его для переопределения метода, подобногоSendAsync (), а затем в сочетании с этим, основываясь на собранной мной информации, использую HttpClient.SetBearerToken () в том же промежуточном программном обеспечении для обновления моего временного экземпляра HttpClient, который генерируется HttpClientFactory?

У меня естьбез понятия.Поскольку ответ на вопрос № 1 - нет, вы, вероятно, не можете.Обратите внимание, что установка токена на предъявителя бесполезна, если срок действия токена истек.Токены имеют подпись, которую вы не сможете победить, если у вас не будет закрытого ключа или миллиона процессоров в течение миллиона лет или не будет обнаружена уязвимость / слабость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...