Identity Server 4, в отличие от Identity Server 3, выдает токены со значением по умолчанию "typ": "at+jwt"
, однако мне все еще нужно выпустить более старую версию токена, то есть "typ": "jwt"
.
Есть ли способ перезаписать конфигурацию IS4 по умолчанию и выпустить токен JWT "typ": "jwt"
?
Я думаю, вам просто нужно установить для этой опции IdentityServer значение jwt:
/// <summary>
/// Gets or sets the value for the JWT typ header for access tokens.
/// </summary>
/// <value>
/// The JWT typ value.
/// </value>
public string AccessTokenJwtType { get; set; } = "at+jwt";
Исходный код смотрите здесь:
Просто замените AccessTokenJwtType
на AddIdentityServer
:
var builder = services.AddIdentityServer(options =>
{
// see https://identityserver4.readthedocs.io/en/latest/topics/resources.html
options.EmitStaticAudienceClaim = true;
options.AccessTokenJwtType = "JWT";
})
Здесь я объяснил это в моем блоге, а также
Это не всегда требуется, это необходимо, когда мы используем приложение или API IDS4 + .NET Framework MVC (без .NET Core или .NET 5). Это выдаст претензию aud
в формате issuer_name/resources
. @Йода
Всегда ли это
EmitStaticAudienceClaim
необходимо? Я прочитал ваш пост и понял: если не работает объявление EmitStaticAudienceClaim. Но я не знаю, когда это действительно.