WSO2 Identity Server supports service provider initiated SSO in SAML? - wso2

I found docs about IDP intitiated SSO in WSO2 IS. But haven't found anything about service provider initiated SSO.
Consider the scenario in which a local IS is used as a service provider which is connected to several externally hosted SAML IDP for outbound authentication.
Am I able to trigger a SP initiated login to one specific external IDP with a static link? Ideally with a relay state attribute which is evaluated after successful SAML sign on process.
I am using WSO2 IS 5.0.0 - but hints for 5.1.0 would also be appreciated.

IDP initiated login.
https://localhost:9443/samlsso?spEntityID=(Your SP Issuer ID)&fidp=(Your Home Realm Identifier if you have multiple IDP's)
https://localhost:9443/samlsso?spEntityID=myspissueid&fidp=myidp
OR
If you only have one IDP or don't need to skip selection page.
https://localhost:9443/samlsso?spEntityID=myspissueid
I believe if you get the fidp parameter in the SAML authnrequest then that will do the trick for the SP initiated one.

considering IDP is running over localhost
IDP init SSO : https://localhost:9443/samlsso?spEntityID=yourSPEntityName
SP init SSO: https://localhost:9443/samlsso

Related

wso2is as SP with 3rd party IDP Initiated SAML

I'm trying to setup what I'll call a SAML2 idp initiated chain on wso2is (5.1.0) . Diagram below:
website.com (sp) <--saml2 idp init-- (idp) wso2is (sp) <--POST saml2 idp init-- (idp) 3rdPartyIDP
The idea being that a 3rd party want's to do an IDP initiated POST saml2 call to authenticate against our internal website but anytime the saml2 call is made wso2 just shows the login page (on wso2is) for the website.com sp. I currently have advanced authentication setup with 3rdParty saml IDP and other IDPs that allow SP initiated saml, they work as expected.
idp iniated SAML2 works fine from wso2is if i use the link: https://wso2is/samlsso?spEntityID=website.com so I thought I would be able to use this as the saml consumer location for the 3rdParty site however as stated however it ends up on the wso2is login page for the website sp with a SAMLresponse as a query parameter instead of performing a second IDP initiated call down the website sp as I'd expect.
Does my consumer URL that I'm providing to the 3rdParty IDP seem correct? Is this flow even possible with wso2is?
https://wso2is/samlsso?spEntityID=website.com is the correct consumer URL to point in this scenario. You need to do following as well.
Configure an Identity Provider in WSO2 IS adding 3rd party saml2 Idp as a Federated authenticator. Refer this URL for more details https://docs.wso2.com/display/IS510/Configuring+an+Identity+Provider
Go to the Service Provider Configuration added for website.com in IS, expand Local & Outbound Authentication Configuration. Select Federated Authentication and pick the Identity Provider you configured from the drop down. Update the Service Provider configuration.

confused in concept of identity provider and outbound authentication in wso2 identity server

i am newbie to the WSO2 identity server 5.0 service pack one.
I've been so confused lately that, what is different between identity provider and an outbound authentication?
How can i usage each of them ?
if i define a custom user store authentication, when must be used a custom authentication in Authentication endpoint? what is difference and usage each of them?
Identity providers are providing identity for users to interact with a system. As an example here in wso2 identity server we can configure Facebook as an Identity Provider(IDP). By doing this we can allow users to be logged into Service Providers using facebook credentials. you can follow the blog in [1] to test Wso2 IS with facebook IDP. Otherthan facebook we can use google, Live, Yahoo, etc. as IDP with IS.
[1] http://prasadtissera.blogspot.com/2014/04/login-with-facebook-for-wso2-identity.html
Thanks

WSO2 Identity / Setup of Federated Authentication using SAML

The basic topology is like this:
WSO2 IS as my service provider and takes care of authorization via XACML, our existing internal IdP takes care of corporate authentication (SAML, Oauth2).
I'd like to receive a guidance about best practice how to configure an outbound Federation using the WSO2 IS as a proxy for SAML protocol. Is it correct to separate the user ID domain, by creating so a called "tenant" in order to route the SAML requests though an outgoing STS connection to an external primary IdP? Is this configured under Identity Provider - add Identity Provider - Federated Authenticators - WS Federation Passive Configuration?
Domains and Tenants?
As an example, I would like to configure an account like this. ID = falb#red.com, where the federated lookup will forward my request to the IdP responsible for the domain "#red.com". Is there any discovery, or smart routing mechanism available that is able to identify the "red.com" domain, without need of creating a tenant?
XACML Access?
In a more advanced scenario, once we have a federation between the WSO2 server and and external IDP, is a service provider, a web application server, able to dispatch a PEP request by attaching a SAML token, without use of preceding entitlement routines, like passage of login and password. Is there an entitlement routine in place that accepts SAML tokens at the PDP side and validates it though the SSO federation mechanism?
Thanks in advance for your guidance.
Regards
Claude

WSO2 Identity Server 5.0 - Can't perform single logout

Whenever I perform logout in one of my service providers I always get the same error message:
Not a valid SAML 2.0 Request Message!
The message was not recognized by the SAML 2.0 SSO Provider. Please check the logs for more details.
Let's take salesforce for example... I have tried configuring it with https://myidpdomain:9443/samlsso and https://myidpdomain:9443/samlsso?wa=wsignout1.0 in the "Identity Provider Logout URL" setting.
The same with zendesk...
To both these service providers I have enabled the single logout checkbox in the SAML Inbound Authentication configuration.
The single sign on works fine.
Are you using SAML2 SSO Web browser or Passive STS ? In SAML2 SSO web browser profile, you can not send wa=wsignout1.0 for logout. It is not valid. Therefore above error has been generated. wa=wsignout1.0 is used in Passive STS profile not in SAML2 SSO. If you are using /samlsso end point in WSO2IS, It means that your are using SAML2 SSO. Therefore, you must send a proper logout request to the /samlsso end point. If you need to get more idea about SSO logout with SAML2 SSO, Please go through this.

How to test WSO2 Identity Server federated Authentication

I’ve made a new Identity Provider and setup it’s SAML2 authentication to our Shibboleth IDP. How do I “login” using this new setup?
The login link still goes to the IS login page, which is desirable because I need to login as admin to fix things, but is there another login link which will redirect to the IDP?
If you need to provide federated authentication for your applications. Your applications can be connected with Identity Server as service providers. Then you can defined your external IDPs a trusted IDP. Each service provider, you can select multiple IDPs as out-bound authenticators. There is some blog about that uses saleforce as trusted IDP, you can go through it as well
If what you want is to login to IS using Shibboleth as IDP, you should edit IS_HOME/repository/conf/security/authenticators.xml to enable SAMLSSOAuthenticator and configure it with the required details.
As best I can tell, there's not facility for testing an Identity Provider. The only way is to actually use it by setting up the full chain. In my case I setup API Manager as a Service Provider in the Identity Server, and selected the Identity Provider (mentioned in the original question) as Federated Authentication for that Service Provider. Then I changed the API Store to use SSO (pointed at the IS). Finally by attempting to open the store I was bounced to the IS, then immediately on to the Identity Provider.
Unfortunately there are a lot of steps in this chain and a lot of things that could be set wrong. I was hoping to find a method for testing this one part but as best I can tell there isn't such a capability.