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 из контекста, но никак не вижу, как этого добиться, любая помощь очень ценится.