Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p><strong>All this discussion revolves around the following question:</strong> </p> <p><em><strong>How does Relying Party (RP) make sure the request containing the authentication token is coming from the OP(OpenId Provider ) to which he forwarded the user’s request to?</em></strong></p> <p>Following steps explains how it happens</p> <ol> <li>User Request comes to the Replying Party (RP), our website in our case </li> <li>Application stores a unique signature corresponding to this user in a local signature store (LSS) and then embeds this signature in the Message and forward this Message to OpenId Provider(OP)</li> <li>User types his credentials and the OP authenticates his Message and then forwards this Message, which has the signature still embedded in it, back to RP </li> <li>RP compare the signature which is embedded in the Message to the signature which is in LSS and if they match RP authenticate the user</li> </ol> <p>If the LSS vanishes (somehow) before the Message comes back from OP there is nothing for RP to compare the signature with thus it fails to authenticate user and throws error: Message signature was incorrect. </p> <p>How can LSS Vanish: </p> <ol> <li>ASP.net refreshes the application pool </li> <li>IIS is restarted </li> <li>In web farm the Message is served by application hosted on different server </li> </ol> <p>Two solutions to this issue: </p> <ol> <li><p>RP run’s in dumb mode</p> <p><strong>a.</strong> It does not store and signature locally and thus does not use signature comparison to make sure the Message is coming from the OP to which he forwarded the user to for authentication </p> <p><strong>b.</strong> Instead, once RP received the authentication Message from the OP it send the Message back to OP and ask him to check if he is the one who has authenticate this user and is the originator of the Message. If OP replies Yes I am the originator of this Message and I have created this message then the user is authenticated by RP </p></li> <li><p>Implement your own persistence store that does not vanish, not matter what ASP.net does to the process, much like using SQL to store session state. </p></li> </ol>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload