Skip to content

Commit 995080d

Browse files
Merge pull request #759 from solid/fix/oidc-wrong-issuer
Warn and log out when OIDC issuer is not set correctly
2 parents b00480b + 90d1a41 commit 995080d

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

default-views/auth/login-required.hbs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@
2727
const session = await SolidAuthClient.popupLogin({ popupUri })
2828
if (session) {
2929
// Make authenticated request to the server to establish a session cookie
30-
await SolidAuthClient.fetch(location)
30+
const { status } = await SolidAuthClient.fetch(location)
31+
if (status === 401) {
32+
alert(`Invalid login.\n\nDid you set ${session.idp} as your OIDC provider in your profile ${session.webId}?`);
33+
await SolidAuthClient.logout();
34+
}
3135
// Now that we have a cookie, reload to display the authenticated page
3236
location.reload()
3337
}

lib/api/authn/webid-oidc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ function initialize (app, argv) {
4646
.catch(err => {
4747
let error = new Error('Could not verify Web ID from token claims')
4848
error.statusCode = 401
49+
error.statusText = 'Invalid login'
4950
error.cause = err
5051

5152
next(error)

lib/handlers/error-pages.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ function handler (err, req, res, next) {
2929
switch (statusCode) {
3030
case 401:
3131
setAuthenticateHeader(req, res, err)
32-
renderLoginRequired(req, res)
32+
renderLoginRequired(req, res, err)
3333
break
3434
case 403:
3535
renderNoPermission(req, res)
@@ -130,9 +130,10 @@ function sendErrorPage (statusCode, res, err, ldp) {
130130
* @param req {IncomingRequest}
131131
* @param res {ServerResponse}
132132
*/
133-
function renderLoginRequired (req, res) {
133+
function renderLoginRequired (req, res, error) {
134134
const currentUrl = util.fullUrlForReq(req)
135135
debug(`Display login-required for ${currentUrl}`)
136+
res.statusMessage = error.statusText
136137
res.status(401)
137138
res.render('auth/login-required', { currentUrl })
138139
}

0 commit comments

Comments
 (0)