WSO2 Identity Server's security token service (STS) is used as the WS-Trust implementation. The STS is capable of issuing SAML 1.1 and 2.0 security tokens and has a SOAP/XML API for token issuance. This API can be secured with the
UserNameToken or with any other WS-Security mechanism as explained below.
Securing the Security Token Service
According to the Trust Brokering model defined in the WS-Trust specification, the users should authenticate themselves to the STS before obtaining a token. STS may use this authentication information when constructing the security token. For example, STS may populate the required claims based on the user name provided by the subject. Therefore, the STS service needs to be secured.
STS is configured under the Resident Identity Provider section of the Identity Server Management Console. Follow the instructions below to secure the Security Token Service by logging into the management console.
- Log in as an admin to access the management console.
- Configure the Resident Identity Provider. See here for more detailed information on how to do this.
- In the Resident Identity Provider page, expand the Inbound Authentication Configuration section along with the Security Token Service Configuration section.
- Click Apply Security Policy.
Select Yes in the Enable Security? dropdown and select a pre-configured security scenario according to your requirements. In this case, we will use UsernameToken under the Basic Scenarios section.
You can find further details about the security policy scenarios from the view scenario option.
Next steps may vary as per the security scenario that you have chosen under point (5) above. Below, is for UsernameToken scenario.
- Select ALL-USER-STORE-DOMAINS from the drop-down.
In the resulting page, select the role you created, to grant permission to access secured service. In this example, admin role is used. Next, click Finish.
The Select Domain drop-down lists many domains. The listed User Groups can vary depending on the domain selected.
- Click Ok on the confirmation dialog window that appears.
- Click Update to complete the process.
Now, STS is configured and secured with a username and password. Only the users with the Admin role can consume the service.
The next step is to add a service provider to consume the STS.
Adding a service provider for the STS client
Do the following steps if you are using a Holder of Key subject confirmation method. See Configuring STS for Obtaining Tokens with Holder-Of-Key Subject Confirmation for more information.
The Subject confirmation methods define how a relying party (RP), which is the end service, can make sure a particular security token issued by an STS is brought by the legitimate subject. If this is not done, a third party can take the token from the wire and send any request it wants including that token. The RP trusts that illegitimate party.
- See Configuring a Service Provider for details on adding a service provider.
- Expand the Inbound Authentication Configuration section and the WS-Trust Security Token Service Configuration section. Click Configure.
In the resulting screen, enter the trusted relying party's endpoint address that is the endpoint address of the Security Token Service. For more information, see Broker Trust Relationship with WSO2 Identity Server and upload the public certificate of the trusted relying party.
You need to add the certificate of the relying party to the truststore. For more information on how to create the certificate and add it to the truststore, see here.
The endpoint must be used as the service
URLto which the token gets delivered by the STS client. Then select the public certificate imported. Tokens issued are encrypted using the public certificate of the trusted relying party. Therefore, the consumer who obtains this token, to invoke the RP service won't be able to see the token.
Click Update to save the changes made to the service provider.