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.