I've been scratching my head for about 2 days on how to solve what seemed to be a simple task, but it's starting to drive me crazy.
I have an application where users will use SAML 2.0 to authenticate. I have a react-application set up for the front-end, and was thinking I was gonna use JWT to secure the rest-api communication between front-end and backend.
When a user signs in, the flow is the following:
What should I do next? The problem is that the user is not in the react-application when calling back from the identity provider, so I've lost all state in the application, so whatever I reply with will get sent to the browser.
Is there any way I could force the browser to give me the SamlResponse which the identityprovider is calling back with? Then I could send it to the server as a http-request from the react-application.
Reconfigure IdP details in Service Provider and try again. Unable to process the Status Code received. There may be multiple reasons for this issue- Authentication failure in IdP or Time mismatch between IdP Server and SP Server. Mostly, Reconfigure the IdP and SP details in both IdP and SP should solve the issue.
Select PASSWORD from the First Factor Type dropdown. Click on save button to configure Nodejs. Click on metadata and copy IDP Entity ID, SAML Login URL, SAML Logout URL, X509 Certificate. Add IDP and SP configurations in saml-config.
SAML 2.0 was introduced in 2005 and remains the current version of the standard. The previous version, 1.1, is now largely deprecated.
SAML 2.0 (Security Assertion Markup Language) is an open standard created to provide cross-domain single sign-on (SSO). In other words, it allows a user to authenticate in a system and gain access to another system by providing proof of their authentication.
After some thinking, I came up with the following solution which worked quite nicely for me.
SAML has something called RelayState
which is a property that the Service Provider has to respond with. So now the process looks like this:
http://frontendserver.com
and gets server the static page with the React application (not signed in.).http://backendserver.com/login/?RelayState=http://frontendserver.com
which authenticates via passport-saml and redirects user to SP. So I pass the origin of the request in RelayState.RelayState/#token
.This might've seemed like the obvious way to do it, but it took me quite a while to figure out that this would work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With