OpenID Connect (OIDC) identity and OAuth 2.0 provider with pluggable connectors
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

84 lines
2.8 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tokens</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body class="token-page">
{{ if .IDToken }}
<div class="token-block">
<div class="token-title">
ID Token:
<a href="{{.IDTokenJWTLink}}" target="_blank">Decode on jwt.io</a>
</div>
<pre><code class="token-code">{{ .IDToken }}</code></pre>
</div>
{{ end }}
{{ if .AccessToken }}
<div class="token-block">
<div class="token-title">
Access Token:
<a href="{{.AccessTokenJWTLink}}" target="_blank">Decode on jwt.io</a>
</div>
<pre><code class="token-code">{{ .AccessToken }}</code></pre>
</div>
{{ end }}
{{ if .Claims }}
<div class="token-block">
<div class="token-title">ID Token Claims:</div>
<pre><code id="claims">{{ .Claims }}</code></pre>
</div>
{{ end }}
{{ if .AccessToken }}
<div class="token-block">
<div class="token-title">UserInfo:</div>
<div id="userinfo-section">
<form id="userinfo-form">
<input type="hidden" name="access_token" value="{{ .AccessToken }}">
<button type="submit" class="fetch-userinfo-btn">
Fetch UserInfo
</button>
</form>
<div id="userinfo-loading" class="userinfo-loading" style="display: none;">
<div class="spinner"></div>
<span>Loading...</span>
</div>
<div id="userinfo-error" class="error-message" style="display: none;"></div>
<pre id="userinfo-claims" style="display: none;"><code></code></pre>
</div>
</div>
{{ end }}
{{ if .RefreshToken }}
<div class="token-block">
<div class="token-title">Refresh Token:</div>
<pre><code class="token-code">{{ .RefreshToken }}</code></pre>
<form action="{{ .RedirectURL }}" method="post">
<input type="hidden" name="refresh_token" value="{{ .RefreshToken }}">
<input type="submit" value="Redeem refresh token">
</form>
</div>
{{ end }}
{{ if .PublicKeyPEM }}
<div class="token-block">
<div class="token-title">
Public Key (for JWT verification):
<button type="button" class="copy-btn" onclick="copyPublicKey()">Copy to Clipboard</button>
</div>
<pre><code id="public-key">{{ .PublicKeyPEM }}</code></pre>
<div class="hint">Copy this key and paste it into jwt.io's "Verify Signature" section to validate the token signature.</div>
</div>
{{ end }}
<a href="/" class="back-button">Back to Home</a>
<script src="/static/token.js"></script>
</body>
</html>