Использование свойства expires_at в объекте ответа аутентификации сервера идентификации

Вопрос / Вопрос

Я хотел бы знать реальную цель "expires_at" После успешного входа в систему Identity Server возвращает следующий ответ JSON

{
  "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImEzck1VZ01Gdjl0UGNsTGE2eUYzekFrZnF1RSIsImtpZCI6ImEzck1VZ01Gdjl0UGNsTGE2eUYzekFrZnF1RSJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo0NDMwMCIsImF1ZCI6ImpzIiwiZXhwIjoxNTAyNDI4MjQyLCJuYmYiOjE1MDI0Mjc5NDIsIm5vbmNlIjoiYWU0MTZlZjQwNDc4NDkwNmI5NTg3MDkxY2I0ODhjZjUiLCJpYXQiOjE1MDI0Mjc5NDIsImF0X2hhc2giOiJIWEhKWl9LdkdfcnVwMXZQY1lKYWRnIiwic2lkIjoiNjY0M2Y0NjlkMGY3YzgxZWQ3MDFhZmQ5MmYzYzFiMDYiLCJzdWIiOiIxIiwiYXV0aF90aW1lIjoxNTAyNDI3NDYxLCJpZHAiOiJpZHNydiIsImFtciI6WyJwYXNzd29yZCJdfQ.ai98BnTEqWQDBT9BPMJmft-KVgC9nLR2fQCpWW95E-CqyW0vrVtgXTh-ExDAXcQGrl2CzEf0a-7B2SnfAJ9qwSFmn4T--bZMKnoN2YnsHdbad9rhCGOvKEDI0NCfTlDYFQ03ZUdZVW27hYJO6Bbt8FeJPBIv3Ko7MV40gqDGojZ74twO_YZOIzJNJGDmIysquD_hRGU75xTz41MBuMob3FMzmLegIOYqUDFz6A8VrFEL3j1Cgo67sp7IP4RQ9uJj56kU8DI4mZR6YCFp3QdLtYqQPVO6zkO1OhpeDVyZNffC1PbFDsJ5lhPRicZ5MZo-m8eMVSNis6X5fWhuuC9kAg",
  "session_state": "0JCstb_hlFJAAw30DwbPoV6mDvg01QRbZ-H4N2TyFcY.03e0a811c45d02838f745a3b369ecabc",
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImEzck1VZ01Gdjl0UGNsTGE2eUYzekFrZnF1RSIsImtpZCI6ImEzck1VZ01Gdjl0UGNsTGE2eUYzekFrZnF1RSJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo0NDMwMCIsImF1ZCI6Imh0dHBzOi8vbG9jYWxob3N0OjQ0MzAwL3Jlc291cmNlcyIsImV4cCI6MTUwMjQyODAwMiwibmJmIjoxNTAyNDI3OTQyLCJjbGllbnRfaWQiOiJqcyIsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJlbWFpbCIsImFwaSJdLCJzdWIiOiIxIiwiYXV0aF90aW1lIjoxNTAyNDI3NDYxLCJpZHAiOiJpZHNydiIsImFtciI6WyJwYXNzd29yZCJdfQ.A6Dj10rBKN2CIo1wLfj_stuNXq-QH66sfdhuQiqqMGXcTQ88VnWcgCo13_br8_-gBb0fTGkdHRHZAP5oHbYtiJA9AAMO7Z8R_JsrVdYSaK9SXpRMuKdEhYTK1BQjVPsU04hHJAIEPQZ0i8MKE3FOsyoDEMOfXdVR8oY9vqEpN5X1AYQ4ia_aB_cHPzOUYccr1B5nn4VWl47D-BW6bf4v60P0wHx1uSYeTN_N3J9nbgEXqvLY6ED978jFRvFz7zllHWkIZSxM91Mu-uyIKa6-MRNuYvbtejdNtDzPpUjWDnAsYhL-AyxKaqq1prACkCxESpPXUggl2jMH8hWbl8lX4w",
  "token_type": "Bearer",
  "scope": "openid profile email api",
  "profile": {
    "sid": "6643f469d0f7c81ed701afd92f3c1b06",
    "sub": "1",
    "auth_time": 1502427461,
    "idp": "idsrv",
    "amr": [
      "password"
    ],
    "given_name": "Bob",
    "family_name": "Smith",
    "email": "bob.smith@email.com"
  },
  "expires_at": 1502428003
}

Я хотел бы знать цель "expires_at": 1502428003, и дайте мне знать формат этого свойства, будь то возврат Ticks / Milliseconds / Seconds /???

Есть ли какие-либо отношения между этим свойством "expires_at": 1502428003 с Silent Renew new Oidc.UserManager().signinSilentCallback();???

1 ответ

Я наткнулся на этот вопрос, пытаясь выяснить, какой формат используется для auth_time и expires_at.

Наконец, я нашел ответ в спецификации openid conect и подумал, что должен добавить его здесь, так как на этот вопрос никогда не было ответа.

И auth_time, и expires_at являются значениями даты и времени, выраженными в количестве секунд с 1970-01-01T00:00:00Z

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

В моем проекте у меня есть класс aC#, который был десериализован из токена json, и я записал expires_at как целое число, а затем добавил его к указанной выше дате в секундах, чтобы получить C# datetime для истечения срока действия токена.

    public int Expires_At { get; set; } = 0;

    public DateTime GetExpirationTime()
    {
        var jan1970 = Convert.ToDateTime("1970-01-01T00:00:00Z");
        return jan1970.AddSeconds(Expires_At);

    }

Например, значение 1537481262 для Expires_At приводит к 2018-09-20T22:07:42 при добавлении в виде секунд к jan1970.

Другие вопросы по тегам