OAUT OAUT отправить дополнительные параметры

Я уверен, что это возможно, но не уверен, как этого добиться. У меня есть OWIN OAUTH реализация, которая в настоящее время принимает имя пользователя и пароль пользователя и аутентифицирует их по базе данных. Я хотел бы расширить это, чтобы передать UID SmartCard для поддержки единого входа с помощью SmartCard.

Могу ли я передать дополнительные параметры в логине OWIN и если да, то как? Основная предпосылка заключается в том, что пользователь может войти в систему с помощью комбинации имени пользователя и пароля или идентификатора SmartCard (если он передан в идентификаторе SmartCard и обнаружен в базе данных, то приложение зарегистрирует пользователя)

Я сейчас прохожуusername, password а такжеgrant_type и я хотел бы добавитьuid к этому списку и забрать это в моемAuthorizationServiceProvider.

я могу видетьUserName, Password а такжеClientId наOAuthGrantResourceOwnerCredentialsContext но я не вижу никаких других свойств, которые бы поддерживали то, чего я пытаюсь достичь.

Это то, что у меня сейчас есть у моего поставщика услуг

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        var user = await this._userService.FindUser(context.UserName, context.Password);

        if (user == null)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Sid, user.Id.ToString()));
        identity.AddClaim(new Claim(ClaimTypes.Role, "user"));
        identity.AddClaim(new Claim("sub", context.UserName));

        var secretKeyBytes = Encoding.UTF8.GetBytes(user.PasswordHash);
        var props =
            new AuthenticationProperties(
                new Dictionary<string, string>
                    {
                        { "dm:appid", user.Id.ToString() },
                        { "dm:apikey", Convert.ToBase64String(secretKeyBytes) }
                    });

        var ticket = new AuthenticationTicket(identity, props);
        context.Validated(ticket);
    }

Я также хочу получить Uid из контекста, но никак не вижу, как этого добиться, любая помощь очень ценится.