Sono sicuro che questo è possibile ma non è sicuro come ottenerlo. Ho un'implementazione OWIN OAUTH che attualmente accetta gli utenti Username e Password e li autentica contro un database. Vorrei estendere questo passaggio a una SmartCard Uid per supportare il single sign-on con una SmartCard.owin oauth invia parametri aggiuntivi
Posso passare altri parametri nel login OWIN e, in caso affermativo, come? La premessa di base è che un utente può effettuare il login con una combinazione username/password O una SmartCard uid (se passa un UID SmartCard e che si trova nel database, l'applicazione accederà all'utente)
Attualmente sto passando username
, password
e grant_type
e vorrei aggiungere uid
a quell'elenco e ritirarlo nel mio AuthorizationServiceProvider
.
posso vedere UserName
, Password
e ClientId
sul OAuthGrantResourceOwnerCredentialsContext
, ma non riesco a vedere tutte le altre proprietà che sosterrebbero quello che sto cercando di realizzare.
Questo è quello che ho attualmente in mio fornitore di servizi
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);
}
voglio essere in grado di ottenere Uid dal contesto come pure, ma non riesco a vedere in ogni caso di raggiungimento di questo, ogni aiuto è molto apprezzato.
Perfetto grazie, ho apportato una leggera modifica alla lettura del parametro nel caso in cui non sia passato in primo luogo, a parte questo è esattamente quello che stavo cercando, grazie –
Contento di aver aiutato Neil. – LeftyX
@LeftyX Ciao. sto cercando di scrivere il mio server oauth proprio usando client_credentials. Ma sono bloccato nel mezzo. posso avere un aiuto? https://github.com/koushiksaha89/oauthserver – user3132179