Acceso a señales de ID enviadas por servidores OIDC

Los implementadores del sistema pueden utilizar una interfaz estandarizada para acceder a los datos de identidad (señal de ID) que envían los servidores OIDC para el usuario que ha iniciado la sesión actualmente.

Al utilizar la interfaz estandarizada, los implementadores del sistema pueden leer la señal de ID del usuario actual y utilizar esta información para personalizaciones adicionales que se realizan como parte de las implementaciones posteriores a la autenticación.

Se puede acceder a esta interfaz con el siguiente código personalizado posterior al inicio de sesión.

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 ejemplo, puede utilizar el siguiente fragmento de código en la implementación de IYFSPostAuthenticationinterface para llamar a la interfaz OidcIdToken después de que se haya realizado el inicio de sesión. Este código se puede utilizar para leer e imprimir idtoken y claims y utilizar esta información en cualquiera de las implementaciones posteriores a la autenticación.

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;
	}

}