Можно ли установить утверждения логического значения в вашем токене идентификации с помощью Duende Identity Server 5?

Я пытаюсь установить пользовательское утверждение с некоторым кодом для Duende Identity Server 5.2.3.

Утверждение работает / добавляется, но это строка, а не логическое значение. Я заметил еще одно требование в JWT, которое является логическим, поэтому мне интересно, могу ли я сделать это также?

Вот код, а затем образец JWT:

      public class CustomTokenService : DefaultTokenService
{
    public override async Task<Token> CreateIdentityTokenAsync(TokenCreationRequest request)
    {
        var token = await base.CreateIdentityTokenAsync(request);

        bool isThisInAGracePeriod = true; // for example ...

        // This doesn't work. There's no bool overload, for the 2nd argument.
        // var myClaim = new Claims("in_grace_period", isThisInAGracePeriod);

        // I need to convert the bool to a string, using ToString();
        var myClaim = new Claims("in_grace_period", isThisInAGracePeriod.ToString());

        token.Claims.Add(myClaim);
    }
}

так заметьте:

  • является значением
  • in_grace_periodэтоstringзначение (потому что мне пришлосьToString()это :( )

Можно ли добавить мою пользовательскую претензию в качествеboolтак что это выглядит так, какemail_verifiedсериализуется в полезную нагрузку токена?

1 ответ

Да,Claimclass имеет конструктор, который принимает 3 параметра, а 3-й является типом значения.

      var claim = new Claim(
    type: "in_grace_period", 
    value: isThisInAGracePeriod.ToString().ToLower(),
    valueType: ClaimValueTypes.Boolean);
Другие вопросы по тегам