4

问题/问题

成功登录后,我想知道该"expires_at"属性的实际用途,然后身份服务器返回以下响应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();???

4

1 回答 1

8

我遇到了这个问题,试图找出 auth_time 和 expires_at 使用什么格式。

最后,我在openid conect 规范中找到了答案,并认为我应该在这里添加它,因为这个问题从未得到回答。

auth_time 和 expires_at 都是日期时间值,表示为自 1970-01-01T00:00:00Z 以来的秒数

我想它们的目的是根据您的需要在客户端应用程序中使用它,但您可能需要将其转换为更有用的日期时间格式。也许您有关于允许令牌使用多长时间的规则,也许您想检查令牌多久过期。

在我的项目中,我有一个从 json 令牌反序列化的 C# 类,我将 expires_at 捕获为整数,然后将其添加到上面的日期中,以获取令牌到期的 C# 日期时间。

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

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

}

例如,将 Expires_At 的值 1537481262 作为秒数添加到 jan1970 时会产生 2018-09-20T22:07:42。

于 2018-09-20T21:25:55.343 回答