Fiori Launchpad: SSO made easy by SAML 2.0 with ADFS
I came across the situation where I need to implement SSO for Fiori launchpad. First thing came in my mind was to do through SAP NW portal since you can very easily achieve this by doing SSO between portal and Fiori. You need to configure SPNEGO on portal to make this entire thing work.
User open portal URL which redirected to Fiori launchpad. Issue with this you will have an additional portal page open which you don’t want any other users to see if you have published Fiori launchpad through your company portal or some other web page.
What tools required?
ADFS system in your organization
Fiori Gateway system
Certificate Signing Authority
How to achieve SSO through SAML?
Activation of SICF
First thing you need to login to SAP ABAP system/Gateway system where your Fiori Launchpad is opening from.
Go to transaction SICF and Activate SAML2 web service
Once you have this Service activated you will able to run SAP TCode: SAML2
HTTPS configuration on ABAP system
Before we run in to configuration make sure you have HTTPs enabled for your gateway systemand certificates are signed as below.
Create profile parameter for HTTPS as below
Restart ICM and check you see HTTPS is enable for your system in SMICM Tcode
SAML configuration on ABAP/Gateway system
Simply run TCode : SAML2 and you will see screen below on your browser, what you need to do is –> Enable SAML 2.0 Support –>Create SAML 2.0 Local Provider.
Add Provider name and click next
Note: I prefer to put FQHN as provider name
Continue with default option on General settings screen
Press Finish on Service Provider Setting
Final Configuration of your service provider will be looking like this
Under:Identity Provider Discovery: Common Domain Cookie (CDC)
Selection Mode can be change to Automatic
|This will be auto generated in TCODE: STRUST|
First download Metadata file from your ADFS
Link is : https://fqdn of ADFS/FederationMetadata/2007-06/FederationMetadata.xml
Note: ADFS server always access through HTTPS:// and NOT HTTP://
Go to Trusted Providers TAB and upload Metadata File
Click Next on screen
Provide signing certificate and click next
Note getting certificate.
Create new blank file with file type .cer
Edit file with Notepad.
Open your FederationMetadata.xml
and Copy certificate content in TXT file.
You can find this at the beginning of the file
Open ADFS website and export certificate and opening with notepad and copy content to text file you created
|Final file is ready|
Click Next and provide Alias name
Click Next on this screen
Select Comparison Method: Better and click Finish
You have trusted provider setup almost ready as below
Click edit and add Supported NameID Formats
I have selected option as below
Final Screens of Trusted Providers are as below
Now Save changes and enable configuration
Configuration is enabled now
Go to TAB Local Provider and download MetaData
Select All option and download
Save the file.
Login to your ADFS server through remote desktop session and copy metadata.xml to desktop of server
Open AD FS Management tool from – Control Panel\System and Security\Administrative Tools
Navigate to Trusted Relationship >> Relying Party Trusts
Add Relying Party Trust
Provide metadata file
Note: I prefer SAP SID name
For now I am going with defaults on next screen and you can select accordingly
Permit all users
Check TABs inside you have information below
Note: Make sure you have checkbox selected
Provide information what you previously selected under “Supported NameID formats”
Click Apply and OK
Edit newly created Relying Party Trust prperties
Go to Advanced TAB and change Secure hash algorithm to SHA-1
Note: Match this with what you selected on your ABAP system
Open URL of your SAP WEBGUI
Note: If you want to disable SAML2 on your URL please append URL with saml2=disabled
Error as below
Apply SAP Note : 2447142 – Error in ST program DECOMPRESS_TEXT
Test URL again and you will able to login without password.
Thank you for reading.
Thanks for providing all these steps; this looks fairly complex! More so than SPNEGO configuration for the Portal, anyway.
One question I have is with regard to licensing (yeah, yeah, I know, we're not supposed to discuss licensing, blah blah blah, but I think that applies more to details of individual contracts, not generic questions). My understanding has been that to provide Single Sign-On for ABAP systems, a license for NWSSO is required, which is different from the case of using SPNEGO in Java systems (where it's "built in"). If I understood your blog correctly, you aren't using the NWSSO product at all here; you're demonstrating a native capability for SSO within the ABAP system. Is that correct? If so, what does that imply for NWSSO licensing requirements?
You are right. We looked in to buying SAP NW SSO 2.0 product but it was quite expensive. We do not wanted to buy that and achieve SSO on ABAP/JAVA systems.
Since we are big shop of Microsoft we decided to go with FREE version of SSO and this is what it is. SSO with ADFS. Soon I am going to publish blog for JAVA.
I wrote one for Java two years ago: https://blogs.sap.com/2016/02/08/single-sign-on-for-java/
Of course, it was based on NetWeaver 7.01, but I highlighted where things would be slightly different (easier) in NetWeaver 7.1+, so the overall process should still apply.
Yea, I saw that but we disabled SPNEGO and use SAML 🙂
The SAML option is great, but only supports the Fiori Launchpad or other browser based sessions.
How are you addressing SAP GUI, Business Client, etc. SSO?
I agree that SAP should include the SSO license in their existing licensing model (per user) as this is a basic feature that most other vendors provide at no cost. That's my $0.02.
Agreed with your comment but, we have achieved all this different ways as below 🙂
SAP GUI = SAP Note - 121178 - NT: Installation note for SSO Single Sign On and 352295 - Microsoft Windows Single Sign-On options
Business Object = SSO Configuration with Active Directory SAP Business Objects 4.2 (AES Encryption)
ABAP = ADFS
JAVA = ADFS / SPNEGO
Does this handle automatic certificate rollover on ADFS?
Sorry, I did not understand your question.
In ADFS, the signing and encryption certificates are good for a year. Sixty days before it expires, ADFS generates a new set of certificates and sets them as secondary. Ten days before the certificate expires, ADFS will do a certificate flip where it makes the new certificate the primary and moves the old one down to secondary.
In a number of other systems, they will have automatically have pulled down that new certificate from ADFS and when the flip happens, it’s ready to use it.
What the original poster was asking is, does SAP have the capability to pull down the new certificate and start using it automatically in advance of the old one expiring, or do you have to manually update the certificate at least 20 days before it expires to prevent your SSO from breaking due to ADFS’ certificate switch?
This was the very issue that happened to me today which crippled our Fiori environment for two hours until we sorted it out.
I haven't come to this situation yet but I guess you need to manually update certificate...
After one year, my ADFS Admin ask me, if an automatic certificate federation SAP and ADFS is now possible, like Conrad Thonger has described above?
Our Fiori and S/4HANA systems are on Red Hat Linux platform. With respect to client wishes, we are researching our options for SSO.
SAP support has informed us that due to Linux being our OS, we cannot use Kerberos based SSO for ABAP and Fiori (via SPNego or SAML2.0). In other words, out of box SSO options for SAP systems on Linux are unavailable.
Do you think otherwise? Are you SAP application running on Windows?
I am running my all apps on windows. I am not 100% sure about Linux but you can try to configure SAML on sandbox environment.
Thank you. We'll try that.
SAML2.0 or SPNEGO functionality are built into SAP system, independent of the OS you use.
We're using Linux and have ran these SSO authentication for years.
I followed your document as well to configure the SSO with ADFS and it is a great article. Thanks for it.
Quick question, Whenever I launch the fiori URL, it is always prompting me to enter the Windows AD user and password? I thought it should be password free when you are in the network? Any settings that you need to make that password free?
Its doing the way it should be. We have it published on our Share point web portal so its seamless for us but you are right it is taking windows username password to login because its going through AD authentication.
Nice job on detailing all the steps.
We have setup S/4 with separate Fiori fontend server.
For FLP I now setup saml2 and for sapgui we are using spnego. During the setup of Enterprise Search the S/4 system is requesting spnego tokens, which are not in the request header. We are going to fix that.
But what I am wondering is why not replace saml2 with spnego also for the web access? We do not have an SAP Portal that the customers access, so will probably not get that popup.
Was that extra screen the only reason not to choose spnego/Kerberos?
Thanks for your time and effort
Sander van Gemert
I am not sure what you mean by web access?
The reason was stated on the blog.
SAML2.0 is an option to go if you do not want to induce additional cost to your implementation, as activating SPNEGO within your system means a SAP NWSSO license.
Great work and very detailed.
Really appreciate it.
I have a question, does this solution support Fiori use scenario with SAP Fiori Client, which is a mobile app delivered by SAP itself.
Sorry but I have not tested it so I do not know its going to work or not. You can give it try and share results with community.
First off, thanks for the well documented steps for both JAVA and Fiori Launchpad SAML2 configuration with ADFS.
I have a scenario to configure SSO for Fiori and EP where the AD user IDs are completely different from the SAP user ids. Also the AD users are from three different domains.
And after going through various documents and your blog, what I understood is that the basic configuration remains same, but the claim configuration at ADFS side and SAP side will need to be configured accordingly. Could you please confirm if my understanding is correct and also what attributes I can use to attain SSO for EP and Fiori.
How can I let a user deactivate the SSO on the launchpad so that they can log in as someone else? For security role testing for instance?
Add below at the end of your URL saml2=disabled
This is really nice.
Can I have a question?
You said "First download Metadata file from your ADFS".
Is the Metadata file has SAP's login ID?
No, Metadata file has some certificates and other AD-related information.
Thank you for replying.
One more question, when we call https://host:port/sap/bc/gui/sap/its/webgui, we need to put AD's ID/PW.
Could you give me more help?
It should not ask for it if your computer is in domain and user on it log in with domain credentials
webgui (SAPGUI for HTML) differs from fiori launchpad.
For that, you need configuration in different areas.
There's a specific blog for that.
Thanks for sharing. Could you please share step for setup user mapping between AD and SAP? I logon AD with user firstname.lastname@example.org but on SAP my user ID is xyz.
You need to set up an Alias on SAP user account but frankly speaking, I never tried this ...
There is an mapping table USREXTID for that.
For this to work you need also change the User ID Mapping Mode to: 'Mapping in USREXTID table, type SA'
The User ID Mapping Mode is under Trusted Providers - Identity Federation.
I have succesfully implemented this at our site.
Dear Yogesh and Bart
Thank you for kindly help. Now I can mapping user between ADFS and SAP.
We have configured sap Fiori SSO with adfs.
When we try to open sap fiori url , it is prompting to enter ad/adfs credentials after that again it is prompting to enter sap Fiori system credentials.
Could you please let me know where we are missing.
Seems configuration issue under Supported NameID Formats.
Yogesh Patel I understood your blog. I have a question about handling redirection login, in this case, How can i reach redirect login AD and SU01? Example: SU01 (until 12 characters: RCRR) > AD (renan.ceguinato) through SAML 2.0?
You need an alias setup on SAP ID
Your blog's super helpful ! Thanks 🙂
We've setup stuff as described here...however, we see one anomaly:
The first attempt prompts us for Windows (AD) credentials.
After entering these, it goes in an infinite loop & ends up with a redirect error.
The second time when the URL is used in the same browser, SSO works fine (without a prompt for Windows credentials).
It picks up credentials from the cache & everything's Ok.
Any idea what could be amiss ?
Thanks a lot !
Hello Saba Sheikh,
This is something unexpected to see. Are you logged in to a computer with same AD username and password?
Yes, I'm logged in with the same AD creds.
Attempt 1: There is a SAML Outgoing Authentication Request without a Response
Attempt 2: SAML Outgoing Authentication Request with an Incoming Response
We're not sure why the ADFS does not respond the first time...
With a populated cache, (second attempt) everything's fine.
Thanks a lot !
Hello Saba Sheikh
What is endpoint configuration?
POST or Redirect?
Thank you for the article. We have ADFS with our client as idP. So we can implement SSO for gateway server.
Can we do SSO for mobile access as well same away. Could you please help.
Thanks for this post.
I have doubts regarding to manipulating file cert steps.
Is not clear for me how do you créate ADFS_Cert.cer file. You say:
Step 1 - créate a blank file named ADFS_Cert.cer.
Here you wrote "file type .crt". So, that's wrong? The correct will be .cer right?
Step2 .- Opening FederationMetadata.xml
The interesting piece of this file is the certificate , I mean, the characters between "<X509Certificate>" and "</X509Certificate>". Right?
So this piece, we have to copy into blank file created before, right?
Step 3 Open ebsite and export certificate
Here we have to go into ADFS, export the certificate, into another temporal file??
And then we have to append this temporal content to file of last step?
Step 4- Final file
so, the final file, named ADFS_Cert.cer Will be composend of two contents parts? firt one, the certificate extracted from metadata, and second one the certificate exported from ADFS website?
Thanks and regards
Yes that is correct.
I have done the SSO configuration with ADFS by SAML2.0 but after entering the Launchpad URL it redirects to ADFS with error like
•Error details: Invalid URI: The format of the URI could not be determined.
He seguido todos los pasos del Manual y funciona todo muy bien excepto para cuando finaliza la sesión , simplemente me sale que finalizo la sesión pero no envía de vuelta al ADFS ojala me puedas ayudar con eso
Hi Yogesh Patel thanks for this excellent post, very carefully explained in all the steps. I've implemented this scenario (ADFS/S/4HANA1909) without any problems multiple times.
Right now I have a client that his platform is Ubuntu + Windows + OpenLDAP + S/4HANA1909 and he wants to implements the same authentication scenario. Do you think at first sight that it can be achieved? Some thoughts about this?
I read the answer you gave to Shantanu Bansal in that opportunity he had a similar problem. I don't know if he went further with his implementation of the suggested sandbox and if he tried to accomplish the SAML authentication in Linux Red Hat without the assitance of any products of third parties making of use the SAP/Windows provided.
Thanks in advance for your reply, any clue would be very appreciated and help me a lot.
I have a problem when I use the Web Dispatcher, outside the domain, the ADFS asks for the credential and then redirects me to fiori, but with the URL of the ABAP System (fiori hostname) and not the Web Dispatcher, here is the error, because I do not I am in internal net.
How can I change this? The ADFS has to redirect to the URL of the Web Dispatcher, right?
Kenneth Monge , you should better ask this as a question.
Use the Web Dispatcher hostname for the SAML2 configuration UI when exporting Service Provider metadata from your ABAP-System. Then the URLs included in metadata will be correct. Import correct metadata to ADFS.
This is Correct!
Hi Yogesh Patel
Thanks for this post. I am having an issue with setting up SSO with ADFS for SAP Fiori Launchpad. I get the below error:
CX_SAML20_CORE: The validation of message 'Response' failed. Long text: The validation of message 'Response' failed.
Caused by: CX_SAML20_CORE: Error in ST program SAML2_ASSERTION when importing XML data
Caused by: CX_SEC_SXML_ERROR: In SSF function SSFPSE_PARAMETER, error value 0 occurred at CL_SEC_SXML_XENCRYPTION->DECRYPT(Line 35)
Any idea what could be wrong ?
Thanks for this post.
Can share the configuration of users in SAP GUI, Example SU01 as well as user mapping?
Thanks for you sharing.
Can you share the configuration of users in SAP GUI, Example SU01, as well as user mapping.