Please find below the steps that need to be followed for configuring Developer Portal SSO:
Prerequisites
The user has to be correctly configured in SecureAuth.
The assertion must contain at least the following attributes:
Example of a SAML assertion attributes:
<saml:AttributeStatement> <saml:Attribute Name="firstname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue>Robin</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="lastname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue>Walsh</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="email"NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue>robin.walsh@edwardjones.com</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="groups" NameFormat="GroupList"> <saml:AttributeValue>AMP_API_Architect</saml:AttributeValue> <saml:AttributeValue>apimpgrp</saml:AttributeValue> … </saml:Attribute> <saml:Attribute Name="UserID" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml:AttributeValue>p#</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement>
<saml:Subject> <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">p#</saml:NameID> … </saml:Subject>
Salesforce Configuration
Configure a Single Sign-on in the Salesforce side following the instructions at: https://help.salesforce.com/s/articleView?id=sf.sso_saml.htm&type=5 and in particular Enable the JIT provisioning as described in the online documentation:
The final configuration should be similar to the following:
Where SAML Identity Type uses:
And SAML Identity Location uses:
When JIT Provisioning is enabled choose the following configuration:
Where SAML Jit Handler is created from the template and Execute Handler is one of the System Administrator users.
Now we are going to customize the Handler APEX class as described in the next section.
JIT Handler Provisioning
Before working on the Apex class, retrieve the Account ID and the Profile ID that is going to be used during the login process to the developer portal as follows.
To get the Account ID:
To get the Profile ID:
Once we have the Account ID and Profile ID we can replace it in the JITProvisioningHandler Apex class. The apex class code is provided as an attachment to this document.
Example:
…
else {
String account = '0018Z00002aVdLNQA0';
a = [SELECT Id FROM Account WHERE Id=:account];
…
Once both values have been replaced replace the JITProvisioning Template code with the one provided using the Edit feature. Example:
Save the update with the Save button.
Testing
From the developer portal choose the SingleSignOn option and use the SSO Username and Password.
The developer portal should be successfully logged in and from the APIs, the tab will be possible to see the list of the API assets published in Exchange.
Troubleshooting
The developer console is very useful for troubleshooting JIT Provisioning errors detected during the execution of the JITHandler apex class.
To access the developer console, right-click on the Setup gear in the salesforce platform.
References
Just-in-Time Provisioning for SAML
001116498

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.