owin oauth envia parâmetros adicionais

Tenho certeza de que isso é possível, mas não sei como alcançá-lo. Eu tenho uma implementação OWIN OAUTH que atualmente aceita os usuários Nome de usuário e Senha e os autentica em um banco de dados. Gostaria de estender isso para transmitir um UID SmartCard para oferecer suporte ao logon único com um SmartCard.

Posso passar parâmetros adicionais no login do OWIN e, em caso afirmativo, como? A premissa básica é que um usuário pode efetuar login com uma combinação de nome de usuário / senha ou um uid SmartCard (se for passando um uid SmartCard e encontrado no banco de dados, o aplicativo fará o logon do usuário)

Atualmente estou passandousername, password egrant_type e eu gostaria de adicionaruid para essa lista e pegar isso no meuAuthorizationServiceProvider.

eu consigo verUserName, Password eClientId noOAuthGrantResourceOwnerCredentialsContext mas não vejo outras propriedades que suportem o que estou tentando alcançar.

É o que tenho atualmente no meu provedor de serviços

    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);
    }

Quero poder obter o Uid também do contexto, mas não consigo enxergar isso de maneira alguma, qualquer ajuda é muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion