Acessando tokens de ID que são enviados por servidores OIDC

Os implementadores do sistema podem usar uma interface padronizada para acessar os dados de identidade (token de ID) que são enviados pelos servidores OIDC para o usuário atualmente conectado.

Usando a interface padronizada, os implementadores do sistema podem ler o token de ID do usuário atual e usar essas informações para customizações adicionais que são feitas como parte de implementações de pós-autenticação

Essa interface pode ser acessada com o seguinte login de post de código customizado:

package com.ibm.sterling.afc.auth;

public interface OidcIdToken {
       /**
       * This method returns a string containing the raw idtokenjwtobject.
       * @returnString
       */
       publicString getIdToken();
       /**
       * This method returns a string containing claims in form of a JSON
       * @return
       */
       publicString getClaims();
}

Por exemplo, é possível usar o fragmento de códigos a seguir em sua implementação do IYFSPostAuthenticationinterface para chamar a interface OidcIdToken após o login ser feito Esse código pode ser usado para ler e imprimir o idtoken e claims e usar essas informações em qualquer uma de suas implementações pós-autenticação.

package org.yourorg.oidc;
import javax.servlet.http.HttpServletRequest;
import com.ibm.sterling.afc.auth.OidcIdToken;
import com.yantra.yfc.util.YFCCommon;
import com.yantra.yfc.util.YFCConfigurator;
import com.yantra.yfs.ui.backend.IYFSPostAuthentication;

public class DummyTokenAuth implements IYFSPostAuthentication {

	public DummyTokenAuth() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

	@Override
	public boolean doPostAuthentication(HttpServletRequest arg0) {
		// TODO Auto-generated method stub
		String sIbmIdEnabled=YFCConfigurator.getInstance().getProperty("yfs.ibmid.authentication.enabled");
		String sProvisionerName=YFCConfigurator.getInstance().getProperty("yfs.ibmid.provisioner.name");
		String sProvisionerClassName=YFCConfigurator.getInstance().getProperty("yfs.ibmid.provisioner."+sProvisionerName+".class");
		// check if the OIDC feature is enabled
		if (!YFCCommon.isVoid(sIbmIdEnabled) 
		&& ("y".equalsIgnoreCase(sIbmIdEnabled)||"yes".equalsIgnoreCase(sIbmIdEnabled)||"t".equalsIgnoreCase(sIbmIdEnabled)||"true".equalsIgnoreCase(sIbmIdEnabled)) 
		&& !YFCCommon.isVoid(sProvisionerClassName)) { 			
			try {
				OidcIdToken token =  (OidcIdToken)Class.forName(sProvisionerClassName).newInstance();	
				String jwt = token.getIdToken();
				String claims = token.getClaims();
				System.out.println("jwt: "+jwt);
				System.out.println("claims: "+claims);
			}
			catch(Exception ex) {
							
			}
		}

		return true;
	}

}