OWIN-Inhaber-Token-Authentifizierung

Ich habe einige Fragen zum Inhaber-Token. In Owin können Sie ein Ticket schützenProtect(ticket) so was:

ClaimsIdentity identity = new ClaimsIdentity(Startup.OAuthServerOptions.AuthenticationType);

identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName));

 Dictionary<string, string> properties = new Dictionary<string, string>();
 properties.Add("UserId", user.Id);
 properties.Add("UserName", user.UserName);
 properties.Add("Role", "user");

 AuthenticationProperties properties = new AuthenticationProperties(properties);

 AuthenticationTicket ticket = new AuthenticationTicket(identity, properties);


 DateTime currentUtc = DateTime.UtcNow;

 DateTime expireUtc = currentUtc.Add(TimeSpan.FromHours(24));

 ticket.Properties.IssuedUtc = currentUtc;
 ticket.Properties.ExpiresUtc = expireUtc;


 string token = OAuthAuthorizationServerOptions.AccessTokenFormat.Protect(ticket)

Jetzt wird das Token ungefähr so aussehen:

nqak-9R6U64Owsm_lqn_mJzKc_Djd8iVnIw0EX77v5x2rybhf4m_zg_UnrsoO5BxDZQl0HWrSvvd4efa4ChNSf5rAGhd13aOXZlvwOJOZ5v_9bhRCq8A7tqHyiM6DqVVOyYs3lh2SU-wU1m85HH2IcYDtdTY3ijaKZ_QnP1nsqO5LRnnEL4upbETPW9zqWIZzZBX7_Y2cXi2v0K7WnlRor3gFKIZlU9J-NfidRpWXqq5744NfWWHalYADGS7eUWyuxPJCj9ykHYzaXFksJEXBw

Meine Fragen:

Wie wird dieses Token generiert / verschlüsselt?

Besteht die Möglichkeit, dass jemand versucht, den Token zu verfälschen und ihm einige benutzerdefinierte Ansprüche hinzuzufügen?

Beispiel:

Wenn Sie die Token-Zeichenfolge haben, können Sie dies tun:

AuthenticationTicket ticket = OAuthAuthorizationServerOptions.AccessTokenFormat.Unprotect(token);

Jetzt können Sie benutzerdefinierte Ansprüche hinzufügen. Zum Beispiel, wenn es eine gibtrole Anspruch mit Wertuser Dann können Sie diesen Anspruch ändern und hinzufügenadmin Anschließend wird das Ticket neu codiert und Sie erhalten ein Token mit Administratorrolle.

Ich habe tatsächlich einige Tests durchgeführt, ein Token auf einem Server codiert und dann versucht, es auf einem anderen System zu ändern, konnte es aber nichtUnprotect es. Daher denke ich, dass das Ticket möglicherweise mit dem Maschinenschlüssel, auf dem es ursprünglich erstellt wurde, verschlüsselt / entschlüsselt wird. Aber wenn ich es versucheUnprotect es von der gleichen Maschine funktioniert. Ich kann es entschlüsseln und ändern.

Kann mir bitte jemand diesen Vorgang erklären?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage