2017-02-03 16 views
1

Я использую endpoint/oauth2/token для запроса (через HTTP POST) токена-маркера аутентификации от Azure Active Directory. Все настраивается в AAD для регистрации веб-клиента, который извлекает этот токен с помощью этого потока. Используется client_id и client_secret (общий симметричный ключ), и я успешно получаю json-ответ, содержащий токен-маркер jwt для auth.Контроль истечения токена аутентификации с использованием потока учетных данных клиента Azure Active Directory

То, что я пытаюсь понять, состоит в том, чтобы знать, как мы можем настроить истечение срока действия токена за истечение 1 часа, который, как представляется, находится на токене, который я получаю через этот запрос POST. Общий ключ, который я создал на классическом портале Azure AD, имеет истечение 2 года. Однако возвращаемый токен имеет 1 час истечения срока действия.

Исходя из этого, я предполагаю, что способ, которым работает этот поток (по крайней мере, до AAD), заключается в том, что нашему веб-клиенту необходимо запланировать себя, чтобы повторно отправить запрос на новый токен аутентификации в пределах 1hr, чтобы обеспечить свежесть токена аутентификации, используемого для аутентифицированных вызовов REST, выполненных веб-клиентом. Я предполагаю, что это могло бы также уловить исключение, если ранее выпущенный токен терпит неудачу, а затем сделать новый запрос (это только детали реализации ...).

Это нормальный способ сохранения токена аутентификации, обновленного для этого потока? Я знаю, что с большинством других потоков генерируется токен обновления, и «танец» OAuth может быть выполнен, чтобы сохранить токен аутентификации. ADAL прекрасно описывает все эти детали, но в этом случае я использую поток учетных данных клиента и используя HTTP-запрос POST для конечной точки oauth2/token и в этом потоке (в соответствии с RFC OAuth2) токен обновления не предоставляется. ]

Я предположил, что возможно было бы установить более длительный срок действия на токен OAuth, возможно, даже неопределенный токен для этого сценария клиентского или серверного клиента. Возможно ли это в настройках Azure AD?

Документ, связанный в Azure AD token lifetime config, предполагает, что сроки жизни могут быть конфигурируемы.

ответ

1

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

  1. Если мы не имеем маркер, получить один
  2. Если время истечения приближается, получить новый один
  3. Независимо от того, что , верните либо кешированный токен, либо новый токен

И жизнь может быть настроена для каждого участника, приложения или организации службы за связанный документ. Таким образом, вы должны иметь возможность продлить срок службы токена доступа до 1 дня, если хотите.

Я подтвердил, что вы действительно можете продлить срок действия токена доступа на свободном уровне Azure AD. Отказ от ответственности на documentation page говорит, что некоторые функции могут потребовать премиум в будущем. И на самом деле не говорит, что:/

Для этого вам понадобится Azure AD v2 PowerShell cmdlets. Достаточно пары команд:

Connect-AzureAD 
# Create new policy in Azure AD 
New-AzureADPolicy -Definition @("{`"TokenLifetimePolicy`":{`"Version`":1,`"AccessTokenLifetime`":`"03:00:00`"}}") -DisplayName ThreeHourTokenPolicy -IsOrganizationDefault $false -Type TokenLifetimePolicy 
# Apply on Graph API's service principal in my directory 
Add-AzureADServicePrincipalPolicy -ObjectId ad17cfce-f2fd-4b3e-91f5-aa0a82e94012 -RefObjectId 640f76ea-6ef6-40c8-8ed5-178a76e7e762 

Вам нужно выяснить, что означает идентификатор объекта службы проекта, например. Graph API, чтобы установить его только для токенов.В качестве альтернативы вы можете просто установить -IsOrganizationDefault $true во втором вызове и полностью исключить третье, сделав политику применимой ко всем принципам и приложениям служб, если у них нет более специфических.

Там нет неопределенной доступа лексемы Azure AD, хотя вы можете установить обновление маркеров всей жизнь пока-не отозваны.

+0

Во втором чтении этого документа (теперь более 1 года), который я связал, похоже, эта функция настройки времени доступа к токенам находится в общедоступном предварительном просмотре AAD и может быть ограничена AAD Premium, когда она выходит за пределы предварительный просмотр. Спасибо за разъяснение, что нет неопределенных токенов. Любая идея, если эта функция теперь стала частью бесплатного уровня AAD? – retail3r

+0

Он доступен на свободном уровне, но я не могу сказать, останется ли он таким. Обновленный ответ с примерами. – juunas

+0

Juunas - Большое спасибо за предоставление примеров - с командлетами Powershell и т. Д. – retail3r