{"action":"created","issue":{"url":"https://api.github.com/repos/IIIF/iiif.io/issues/516","labels_url":"https://api.github.com/repos/IIIF/iiif.io/issues/516/labels{/name}","comments_url":"https://api.github.com/repos/IIIF/iiif.io/issues/516/comments","events_url":"https://api.github.com/repos/IIIF/iiif.io/issues/516/events","html_url":"https://github.com/IIIF/iiif.io/issues/516","id":96672902,"number":516,"title":"Do we need a token validation service?","user":{"login":"azaroth42","id":871868,"avatar_url":"https://avatars.githubusercontent.com/u/871868?v=3","gravatar_id":"","url":"https://api.github.com/users/azaroth42","html_url":"https://github.com/azaroth42","followers_url":"https://api.github.com/users/azaroth42/followers","following_url":"https://api.github.com/users/azaroth42/following{/other_user}","gists_url":"https://api.github.com/users/azaroth42/gists{/gist_id}","starred_url":"https://api.github.com/users/azaroth42/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azaroth42/subscriptions","organizations_url":"https://api.github.com/users/azaroth42/orgs","repos_url":"https://api.github.com/users/azaroth42/repos","events_url":"https://api.github.com/users/azaroth42/events{/privacy}","received_events_url":"https://api.github.com/users/azaroth42/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/IIIF/iiif.io/labels/auth","name":"auth","color":"f7c6c7"}],"state":"open","locked":false,"assignee":{"login":"azaroth42","id":871868,"avatar_url":"https://avatars.githubusercontent.com/u/871868?v=3","gravatar_id":"","url":"https://api.github.com/users/azaroth42","html_url":"https://github.com/azaroth42","followers_url":"https://api.github.com/users/azaroth42/followers","following_url":"https://api.github.com/users/azaroth42/following{/other_user}","gists_url":"https://api.github.com/users/azaroth42/gists{/gist_id}","starred_url":"https://api.github.com/users/azaroth42/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azaroth42/subscriptions","organizations_url":"https://api.github.com/users/azaroth42/orgs","repos_url":"https://api.github.com/users/azaroth42/repos","events_url":"https://api.github.com/users/azaroth42/events{/privacy}","received_events_url":"https://api.github.com/users/azaroth42/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/IIIF/iiif.io/milestones/6","html_url":"https://github.com/IIIF/iiif.io/milestones/Other%202.1","labels_url":"https://api.github.com/repos/IIIF/iiif.io/milestones/6/labels","id":701936,"number":6,"title":"Other 2.1","description":"Rest, Auth, Search etc. APIs to coincide with 2.1 releases in 2015","creator":{"login":"azaroth42","id":871868,"avatar_url":"https://avatars.githubusercontent.com/u/871868?v=3","gravatar_id":"","url":"https://api.github.com/users/azaroth42","html_url":"https://github.com/azaroth42","followers_url":"https://api.github.com/users/azaroth42/followers","following_url":"https://api.github.com/users/azaroth42/following{/other_user}","gists_url":"https://api.github.com/users/azaroth42/gists{/gist_id}","starred_url":"https://api.github.com/users/azaroth42/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/azaroth42/subscriptions","organizations_url":"https://api.github.com/users/azaroth42/orgs","repos_url":"https://api.github.com/users/azaroth42/repos","events_url":"https://api.github.com/users/azaroth42/events{/privacy}","received_events_url":"https://api.github.com/users/azaroth42/received_events","type":"User","site_admin":false},"open_issues":23,"closed_issues":0,"state":"open","created_at":"2014-06-26T00:12:02Z","updated_at":"2015-07-22T22:36:00Z","due_on":"2015-10-01T07:00:00Z","closed_at":null},"comments":1,"created_at":"2015-07-22T21:47:41Z","updated_at":"2015-07-24T09:25:18Z","closed_at":null,"body":"\r\nWhich would let us validate whether the 4xx error was from a broken token, or for some other reason?"},"comment":{"url":"https://api.github.com/repos/IIIF/iiif.io/issues/comments/124454543","html_url":"https://github.com/IIIF/iiif.io/issues/516#issuecomment-124454543","issue_url":"https://api.github.com/repos/IIIF/iiif.io/issues/516","id":124454543,"user":{"login":"tomcrane","id":1443575,"avatar_url":"https://avatars.githubusercontent.com/u/1443575?v=3","gravatar_id":"","url":"https://api.github.com/users/tomcrane","html_url":"https://github.com/tomcrane","followers_url":"https://api.github.com/users/tomcrane/followers","following_url":"https://api.github.com/users/tomcrane/following{/other_user}","gists_url":"https://api.github.com/users/tomcrane/gists{/gist_id}","starred_url":"https://api.github.com/users/tomcrane/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomcrane/subscriptions","organizations_url":"https://api.github.com/users/tomcrane/orgs","repos_url":"https://api.github.com/users/tomcrane/repos","events_url":"https://api.github.com/users/tomcrane/events{/privacy}","received_events_url":"https://api.github.com/users/tomcrane/received_events","type":"User","site_admin":false},"created_at":"2015-07-24T09:25:18Z","updated_at":"2015-07-24T09:25:18Z","body":"Isn't the token service its own validation service? Or rather, if you're going to spend an HTTP request validating a token, just call the token service instead and get another one - it's the best way of determining what the token represents, which is that the user has the cookies to get the pixels. It also offers a way of keeping a token session alive, the implementation can renew the token.\r\n\r\n@edsilv has been implementing a switchable pessimistic/optimistic strategy in the UV that determines how much it trusts its own token store."}}