Дополнительные претензии в токене в веб-интерфейсе - PullRequest
0 голосов
/ 07 июня 2018

Назначение токена в веб-интерфейсе - удостоверение личности пользователя.Вот способ, которым я создал токен.

public AuthTokenModel GenerateToken(string UserName, string password, string appCode)
    {
        var tokenExpiration = TimeSpan.FromSeconds(Convert.ToDouble(GetAppSettingsValue("TokenExpiry")));

        ClaimsIdentity identity = new ClaimsIdentity(OAuthDefaults.AuthenticationType);

        identity.AddClaim(new Claim("loginId", UserName));
        identity.AddClaim(new Claim("password", password));
        identity.AddClaim(new Claim("applicationCode", appCode));

        var props = new AuthenticationProperties()
        {
            IssuedUtc = DateTime.UtcNow,
            ExpiresUtc = DateTime.UtcNow.Add(tokenExpiration),
        };
        var ticket = new AuthenticationTicket(identity, props);
        var accessToken = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);

        AuthTokenModel model = new AuthTokenModel();
        model.AccessToken = string.Format("{0} {1}", "bearer", accessToken);
        model.TokenType = "bearer";
        model.ExpiresIn = tokenExpiration.TotalSeconds.ToString();
        model.Expires = ticket.Properties.ExpiresUtc.ToString();
        model.Issued = ticket.Properties.IssuedUtc.ToString();

        return model;
    }

и Модель определяется как:

public class AuthTokenModel
{
    public string AccessToken { get; set; }

    public string TokenType { get; set; }

    public string ExpiresIn { get; set; }

    public string Issued { get; set; }

    public string Expires { get; set; }
}

, но я хочу знать, если я добавлю больше информации о пользователе в токене, этолучший подход?и какова производительность, если я получу дополнительную информацию из токена, а не из базы данных.

1 Ответ

0 голосов
/ 07 июня 2018
  1. Никогда и нигде не указывайте пароль пользователя.Особенно в токене.
  2. Токен сам по себе очень абстрактная вещь.Концепция токена на предъявителя декларирует только одну идею: любой, кто обладает этим токеном, может использовать его так же, как и другие.Этот токен является своего рода подтверждением полномочий пользователя.
  3. Реализация собственного проприетарного протокола аутентификации на основе токенов будет не лучшим выбором, поскольку это сложная работа.
  4. Взгляните на OAuth2.0 / OpenIDConnect документация к протоколам.Рассмотрим зрелое и открытое .net-core (и ранее классическое .net Framework) решение на основе , реализующее эти протоколы - IdentityServer .

Я так думаюбыло бы хорошим началом для понимания аутентификации на основе токенов в веб-приложениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...