Bearer Token に関していくつか質問があります。Protect(ticket)Owin では、次のようにチケットを保護できます。
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)
トークンは次のようになります。
nqak-9R6U64Owsm_lqn_mJzKc_Djd8iVnIw0EX77v5x2rybhf4m_zg_UnrsoO5BxDZQl0HWrSvvd4efa4ChNSf5rAGhd13aOXZlvwOJOZ5v_9bhRCq8A7tqHyiM6DqVVOyYs3lh2SU-wU1m85HH2IcYDtdTY3ijaKZ_QnP1nsqO5LRnnEL4upbETPW9zqWIZzZBX7_Y2cXi2v0K7WnlRor3gFKIZlU9J-NfidRpWXqq5744NfWWHalYADGS7eUWyuxPJCj9ykHYzaXFksJEXBw
私の質問:
- このトークンはどのように生成/暗号化されますか? 
- 誰かがトークンを台無しにして、カスタム クレームを追加しようとする可能性はありますか? 
例:
トークン文字列がある場合、これを行うことができます:
AuthenticationTicket ticket = OAuthAuthorizationServerOptions.AccessTokenFormat.Unprotect(token);
これで、カスタム クレームを追加できます。たとえばrole、値userを持つクレームがある場合、そのクレームを変更して追加adminし、チケットを再エンコードすると、管理者ロールを持つトークンを取得できます。
実際にいくつかのテストを行い、サーバーでトークンをエンコードしてから、別のシステムでそれを変更しようとしましたが、できませんでしUnprotectた。したがって、チケットは、最初に作成されたマシンキーを使用して暗号化/復号化されている可能性があると考えています。Unprotectただし、同じマシンから実行しようとすると動作します。復号化して変更できます。
誰かがこのプロセスを説明できますか?