Оба варианта относятся к тому, какой алгоритм провайдер идентификации использует для подписи JWT. Подписание - это криптографическая операция, которая генерирует «подпись» (часть JWT), которую получатель токена может проверить, чтобы убедиться, что токен не был подделан.
RS256 (подпись RSA с SHA-256 ) является асимметричным алгоритмом и использует пару открытый / секретный ключ: у провайдера идентификации есть закрытый (секретный) ключ, используемый для генерации подписи, а потребитель JWT получает открытый ключ проверить подпись. Поскольку открытый ключ, в отличие от закрытого ключа, не нуждается в защите, большинство провайдеров идентификации делают его доступным для потребителей для получения и использования (обычно через URL-адрес метаданных).
HS256 ( HMAC с SHA-256), с другой стороны, включает в себя комбинацию функции хеширования и одного (секретного) ключа, который совместно используется двумя сторонами, используемыми для генерации хэша, который будет служить подписью. Поскольку один и тот же ключ используется как для генерации подписи, так и для ее проверки, необходимо позаботиться о том, чтобы ключ не был скомпрометирован.
Если вы будете разрабатывать приложение, использующее JWT, вы можете безопасно использовать HS256, потому что у вас будет контроль над тем, кто использует секретные ключи. Если, с другой стороны, у вас нет контроля над клиентом или у вас нет возможности защитить секретный ключ, RS256 подойдет лучше, поскольку потребителю нужно знать только открытый (общий) ключ.
Поскольку открытый ключ обычно делается доступным из конечных точек метаданных, клиенты могут быть запрограммированы на автоматическое получение открытого ключа. В этом случае (как и в случае с библиотеками .Net Core) у вас будет меньше работы по настройке (библиотеки будут получать открытый ключ с сервера). Симметричные ключи, с другой стороны, необходимо заменять вне полосы (что обеспечивает безопасный канал связи) и обновлять вручную, если происходит замена ключа подписи.
Auth0 предоставляет конечные точки метаданных для протоколов OIDC, SAML и WS-Fed, где можно получить открытые ключи. Вы можете увидеть эти конечные точки в разделе «Расширенные настройки» клиента.
Конечная точка метаданных OIDC, например, принимает форму https://{account domain}/.well-known/openid-configuration
. Если вы перейдете по этому URL, вы увидите объект JSON со ссылкой на https://{account domain}/.well-known/jwks.json
, который содержит открытый ключ (или ключи) учетной записи.
Если вы посмотрите на образцы RS256, то увидите, что вам не нужно никуда настраивать открытый ключ: он автоматически извлекается платформой.