fosite icon indicating copy to clipboard operation
fosite copied to clipboard

Unable to obtain expiration time of refresh tokens

Open mitar opened this issue 1 year ago • 5 comments

Preflight checklist

Ory Network Project

No response

Describe your problem

There seems to be no way to obtain expiration time of refresh tokens. Refresh tokens are opaque (and not JWT) and introspection endpoint returns the associated access token claims and not refresh tokens claims.

Describe your ideal solution

I think introspection endpoint should return refresh token claims for the refresh token, not the access token claims. Ping identity does so and returns:

    {
      "active": true
      "exp": 1556823764
    }

    Note: If the refresh token is configured to never expire, the "exp" attribute will not be returned.

Workarounds or alternatives

None I could find.

Version

latest master

Additional Context

No response

mitar avatar Mar 08 '24 23:03 mitar

I added to my introspect endpoint handler:

	if ir.GetTokenUse() == "refresh_token" {
		w.Header().Set("Content-Type", "application/json;charset=UTF-8")
		w.Header().Set("Cache-Control", "no-store")
		w.Header().Set("Pragma", "no-cache")

		if !ir.IsActive() {
			_ = json.NewEncoder(w).Encode(&struct {
				Active bool `json:"active"`
			}{Active: false})
			return
		}

		response := map[string]interface{}{
			"active": true,
		}

		if !ir.GetAccessRequester().GetSession().GetExpiresAt(fosite.RefreshToken).IsZero() {
			response["exp"] = ir.GetAccessRequester().GetSession().GetExpiresAt(fosite.RefreshToken).Unix()
		}

		_ = json.NewEncoder(w).Encode(response)
		return
	}

mitar avatar Mar 09 '24 21:03 mitar

Hello contributors!

I am marking this issue as stale as it has not received any engagement from the community or maintainers for a year. That does not imply that the issue has no merit! If you feel strongly about this issue

  • open a PR referencing and resolving the issue;
  • leave a comment on it and discuss ideas on how you could contribute towards resolving it;
  • leave a comment and describe in detail why this issue is critical for your use case;
  • open a new issue with updated details and a plan for resolving the issue.

Throughout its lifetime, Ory has received over 10.000 issues and PRs. To sustain that growth, we need to prioritize and focus on issues that are important to the community. A good indication of importance, and thus priority, is activity on a topic.

Unfortunately, burnout has become a topic of concern amongst open-source projects.

It can lead to severe personal and health issues as well as opening catastrophic attack vectors.

The motivation for this automation is to help prioritize issues in the backlog and not ignore, reject, or belittle anyone.

If this issue was marked as stale erroneously you can exempt it by adding the backlog label, assigning someone, or setting a milestone for it.

Thank you for your understanding and to anyone who participated in the conversation! And as written above, please do participate in the conversation if this topic is important to you!

Thank you 🙏✌️

github-actions[bot] avatar Mar 10 '25 00:03 github-actions[bot]

So should the above be added in PR to fosite?

mitar avatar Mar 10 '25 07:03 mitar