Skip to content

Commit 63a5973

Browse files
committed
add code flow sample
1 parent c68ceaa commit 63a5973

12 files changed

+312
-3
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>oidc-client test</title>
5+
<link rel='stylesheet' href='app.css'>
6+
</head>
7+
<body>
8+
<div>
9+
<a href="code-identityserver-sample.html">back to sample</a>
10+
</div>
11+
<pre id='out'></pre>
12+
<script src='log.js'></script>
13+
<script src='oidc-client.js'></script>
14+
<script src='code-identityserver-sample-callback.js'></script>
15+
</body>
16+
</html>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Oidc.Log.logger = console;
2+
// Oidc.Log.level = Oidc.Log.DEBUG;
3+
// new Oidc.UserManager().signinRedirectCallback().then(function(user) {
4+
// log("signin response success", user);
5+
// }).catch(function(err) {
6+
// log(err);
7+
// });
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<title>identityserver test</title>
6+
<link rel='stylesheet' href='app.css'>
7+
</head>
8+
9+
<body>
10+
<ul id='logMessages'></ul>
11+
<script src='oidc-client.js'></script>
12+
<script src='code-identityserver-sample-popup-signin.js'></script>
13+
</body>
14+
15+
</html>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var log = {
2+
debug:logMessage, warn: logMessage, info: logMessage, error:logMessage
3+
};
4+
5+
function logMessage(msg){
6+
document.getElementById('logMessages').innerHTML += "<li>" + msg + "</li>";
7+
console.log(msg);
8+
}
9+
10+
Oidc.Log.logger = console; // log;
11+
Oidc.Log.level = Oidc.Log.DEBUG;
12+
13+
new Oidc.UserManager().signinPopupCallback().catch(function(err){
14+
Oidc.Log.logger.error("error: " + err && err.message);
15+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<title>identityserver test</title>
6+
<link rel='stylesheet' href='app.css'>
7+
</head>
8+
9+
<body>
10+
<h1>Signed Out</h1>
11+
<script src='oidc-client.js'></script>
12+
<script src='code-identityserver-sample-popup-signout.js'></script>
13+
</body>
14+
15+
</html>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Oidc.Log.logger = console;
2+
Oidc.Log.level = Oidc.Log.INFO;
3+
// can pass true param and will keep popup window open
4+
new Oidc.UserManager().signoutPopupCallback();
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<title>identityserver test</title>
6+
<link rel='stylesheet' href='app.css'>
7+
</head>
8+
9+
<body>
10+
<script src='oidc-client.js'></script>
11+
<script src='code-identityserver-sample-silent.js'></script>
12+
</body>
13+
14+
</html>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Oidc.Log.logger = console;
2+
Oidc.Log.level = Oidc.Log.INFO;
3+
new Oidc.UserManager().signinSilentCallback();
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>identityserver test against https://demo.identityserver.io/</title>
5+
<link rel='stylesheet' href='app.css'>
6+
</head>
7+
<body>
8+
<div>
9+
<a href='/'>home</a>
10+
<a href='code-identityserver-sample.html'>clear url</a>
11+
</div>
12+
<div>
13+
<button id='clearState'>clear stale state</button>
14+
<button id='getUser'>get user</button>
15+
<button id='removeUser'>remove user</button>
16+
<button id='querySessionStatus'>query user status at token server</button>
17+
</div>
18+
<div>
19+
<button id='startSigninMainWindow'>start signin main window</button>
20+
<button id='endSigninMainWindow'>end signin main window</button>
21+
<button id='startSigninMainWindowDiffCallbackPage'>start signin main window with different callback page</button>
22+
</div>
23+
<div>
24+
<button id='popupSignin'>signin with popup</button>
25+
<button id='iframeSignin'>signin with iframe</button>
26+
</div>
27+
<div>
28+
<button id='startSignoutMainWindow'>start signout main window</button>
29+
<button id='endSignoutMainWindow'>end signout main window</button>
30+
</div>
31+
<div>
32+
<button id='popupSignout'>signout with popup</button>
33+
</div>
34+
35+
<pre id='out'></pre>
36+
37+
<script src='oidc-client.js'></script>
38+
<script src='log.js'></script>
39+
<script src='code-identityserver-sample.js'></script>
40+
</body>
41+
</html>
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
3+
4+
///////////////////////////////
5+
// UI event handlers
6+
///////////////////////////////
7+
document.getElementById('clearState').addEventListener("click", clearState, false);
8+
document.getElementById('getUser').addEventListener("click", getUser, false);
9+
document.getElementById('removeUser').addEventListener("click", removeUser, false);
10+
document.getElementById('querySessionStatus').addEventListener("click", querySessionStatus, false);
11+
12+
document.getElementById('startSigninMainWindow').addEventListener("click", startSigninMainWindow, false);
13+
document.getElementById('endSigninMainWindow').addEventListener("click", endSigninMainWindow, false);
14+
document.getElementById('startSigninMainWindowDiffCallbackPage').addEventListener("click", startSigninMainWindowDiffCallbackPage, false);
15+
16+
document.getElementById('popupSignin').addEventListener("click", popupSignin, false);
17+
document.getElementById('iframeSignin').addEventListener("click", iframeSignin, false);
18+
19+
document.getElementById('startSignoutMainWindow').addEventListener("click", startSignoutMainWindow, false);
20+
document.getElementById('endSignoutMainWindow').addEventListener("click", endSignoutMainWindow, false);
21+
22+
document.getElementById('popupSignout').addEventListener("click", popupSignout, false);
23+
24+
///////////////////////////////
25+
// config
26+
///////////////////////////////
27+
Oidc.Log.logger = console;
28+
Oidc.Log.level = Oidc.Log.DEBUG;
29+
30+
var settings = {
31+
//authority: 'https://demo.identityserver.io/',
32+
authority: 'http://localhost:5000/',
33+
client_id: 'js_code',
34+
redirect_uri: 'http://localhost:15000/code-identityserver-sample.html',
35+
post_logout_redirect_uri: 'http://localhost:15000/code-identityserver-sample.html',
36+
response_type: 'code',
37+
scope: 'openid profile email api1',
38+
39+
popup_redirect_uri:'http://localhost:15000/code-identityserver-sample-popup-signin.html',
40+
popup_post_logout_redirect_uri:'http://localhost:15000/code-identityserver-sample-popup-signout.html',
41+
42+
silent_redirect_uri:'http://localhost:15000/code-identityserver-sample-silent.html',
43+
automaticSilentRenew:true,
44+
//silentRequestTimeout:10000,
45+
46+
filterProtocolClaims: true,
47+
loadUserInfo: true
48+
};
49+
var mgr = new Oidc.UserManager(settings);
50+
51+
///////////////////////////////
52+
// events
53+
///////////////////////////////
54+
mgr.events.addAccessTokenExpiring(function () {
55+
console.log("token expiring");
56+
log("token expiring");
57+
});
58+
59+
mgr.events.addAccessTokenExpired(function () {
60+
console.log("token expired");
61+
log("token expired");
62+
});
63+
64+
mgr.events.addSilentRenewError(function (e) {
65+
console.log("silent renew error", e.message);
66+
log("silent renew error", e.message);
67+
});
68+
69+
mgr.events.addUserLoaded(function (user) {
70+
console.log("user loaded", user);
71+
mgr.getUser().then(function(){
72+
console.log("getUser loaded user after userLoaded event fired");
73+
});
74+
});
75+
76+
mgr.events.addUserUnloaded(function (e) {
77+
console.log("user unloaded");
78+
});
79+
80+
///////////////////////////////
81+
// functions for UI elements
82+
///////////////////////////////
83+
function clearState(){
84+
mgr.clearStaleState().then(function(){
85+
log("clearStateState success");
86+
}).catch(function(e){
87+
log("clearStateState error", e.message);
88+
});
89+
}
90+
91+
function getUser() {
92+
mgr.getUser().then(function(user) {
93+
log("got user", user);
94+
}).catch(function(err) {
95+
log(err);
96+
});
97+
}
98+
99+
function removeUser() {
100+
mgr.removeUser().then(function() {
101+
log("user removed");
102+
}).catch(function(err) {
103+
log(err);
104+
});
105+
}
106+
107+
function startSigninMainWindow() {
108+
mgr.signinRedirect({state:'some data'}).then(function() {
109+
log("signinRedirect done");
110+
}).catch(function(err) {
111+
log(err);
112+
});
113+
}
114+
115+
function endSigninMainWindow() {
116+
mgr.signinRedirectCallback().then(function(user) {
117+
log("signed in", user);
118+
}).catch(function(err) {
119+
log(err);
120+
});
121+
}
122+
123+
function startSigninMainWindowDiffCallbackPage() {
124+
mgr.signinRedirect({state:'some data', redirect_uri: 'http://localhost:15000/code-identityserver-sample-callback.html'}).then(function() {
125+
log("signinRedirect done");
126+
}).catch(function(err) {
127+
log(err);
128+
});
129+
}
130+
131+
function popupSignin() {
132+
mgr.signinPopup({state:'some data'}).then(function(user) {
133+
log("signed in", user);
134+
}).catch(function(err) {
135+
log(err);
136+
});
137+
}
138+
139+
function popupSignout() {
140+
mgr.signoutPopup({state:'some data'}).then(function() {
141+
log("signed out");
142+
}).catch(function(err) {
143+
log(err);
144+
});
145+
}
146+
147+
function iframeSignin() {
148+
mgr.signinSilent({state:'some data'}).then(function(user) {
149+
log("signed in", user);
150+
}).catch(function(err) {
151+
log(err);
152+
});
153+
}
154+
155+
function querySessionStatus() {
156+
mgr.querySessionStatus().then(function(status) {
157+
log("user's session status", status);
158+
}).catch(function(err) {
159+
log(err);
160+
});
161+
}
162+
163+
function startSignoutMainWindow(){
164+
mgr.signoutRedirect({state:'some data'}).then(function(resp) {
165+
//mgr.signoutRedirect().then(function(resp) {
166+
log("signed out", resp);
167+
}).catch(function(err) {
168+
log(err);
169+
});
170+
};
171+
172+
function endSignoutMainWindow(){
173+
mgr.signoutRedirectCallback().then(function(resp) {
174+
log("signed out", resp);
175+
}).catch(function(err) {
176+
log(err);
177+
});
178+
};

samples/VanillaJS/public/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
<ul>
99
<li><a href='oidc-client-sample.html'>OidcClient Sample</a></li>
1010
<li><a href='user-manager-sample.html'>UserManager Sample</a></li>
11-
<li><a href='identityserver-sample.html'>UserManager Sample with IdentityServer</a></li>
11+
<li><a href='identityserver-sample.html'>UserManager Sample with IdentityServer with implicit flow</a></li>
12+
<li><a href='code-identityserver-sample.html'>UserManager Sample with IdentityServer with code flow</a></li>
1213
</ul>
1314
</body>
1415
</html>

samples/VanillaJS/server.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
var open = require('open');
55
var path = require('path');
66

7-
var port = 5000;
7+
var port = 15000;
88
var url = "http://localhost:" + port;
99

1010
var express = require('express');
1111
var app = express();
1212

1313
var static = express.static(path.join(__dirname, 'public'));
1414
app.use(function (req, res, next) {
15-
res.set('Content-Security-Policy', "default-src 'self' https://demo.identityserver.io");
15+
res.set('Content-Security-Policy', "default-src 'self' https://demo.identityserver.io http://localhost:5000");
1616
next();
1717
});
1818
app.use(static);

0 commit comments

Comments
 (0)