Skip to content

Conversation

@RubenVerborgh
Copy link
Contributor

@RubenVerborghRubenVerborgh commented Mar 23, 2018

Addresses the node-solid-server part of #571.

oidc-auth-manager still loses the URL we send, so fixes on that side are needed to fully solve #571. Tracking that in nodeSolidServer/oidc-auth-manager#17.

</div>
<divclass="container">
<formmethod="post"action="/api/auth/select-provider">
<formmethod="post">
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Always POST to self, so we don't lose query string.

<labelfor="webid">WebID or server URL:</label>
<inputtype="text"class="form-control"name="webid"id="webid"
value="{{serverUri}}" />
<inputtype="hidden"name="returnToUrl"id="returnToUrl"value="" />
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one was always empty, so rather pointless. Instead, the query string should be used.

'/api/auth/select-provider?returnToUrl='+currentUrl
constlocals=req.app.locals
constcurrentUrl=util.fullUrlForReq(req)
constloginUrl=`${locals.host.serverUri}/api/auth/select-provider?returnToUrl=${encodeURIComponent(currentUrl)}`
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Escaping was definitely important here (for query strings and such).

<meta charset="UTF-8">
<script>
window.location.href = "${url}" + window.location.hash
window.location.href = "${url}" + encodeURIComponent(window.location.hash)
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it is the client who appends the hash (and only the client can do that).

res.header('Content-Type','text/html')

letcurrentUrl=util.fullUrlForReq(req)
req.session.returnToUrl=currentUrl
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't rely on session, because the server cannot see the hash.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fixed mechanism (not relying on session) will still work on direct requests by the browser (like, requesting an image or a pdf file or whatever), not mediated by a client?

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we end up in this code, we are in the process of rendering an HTML error page. So if that's the behavior we exhibit in response to a browser directly requesting an image (I hope not), it's broken for another reason already 😄

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh, I see. Makes sense.

dmitrizagidulin
dmitrizagidulin previously approved these changes Mar 23, 2018
Copy link
Contributor

@dmitrizagidulindmitrizagidulin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Addresses the node-solid-server part of #571.
@RubenVerborgh
Copy link
ContributorAuthor

@timble7be5dd adds a temporary solution to preserve the full return URL (with hash) when logging in with WebID-TLS. Could you test fix/redirect-hash branch on timbl.com?

Copy link
Contributor

@timbltimbl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works for me on timbl.com
Looks reasonable
An important fix!!

@RubenVerborghRubenVerborgh merged commit 4cfd5a3 into developMay 4, 2018
@RubenVerborghRubenVerborgh deleted the fix/redirect-hash branch May 4, 2018 22:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@RubenVerborgh@dmitrizagidulin@timbl