BasicTokenUserInfoParser.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.pdd.core.token.parser;

  21. import java.io.Serializable;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.Properties;

  25. import org.openspcoop2.pdd.core.token.Costanti;
  26. import org.openspcoop2.pdd.core.token.TokenUtilities;

  27. /**    
  28.  * BasicTokenUserInfoParser
  29.  *
  30.  * @author Poli Andrea (poli@link.it)
  31.  * @author $Author$
  32.  * @version $Rev$, $Date$
  33.  */
  34. public class BasicTokenUserInfoParser implements ITokenUserInfoParser {

  35.     protected String raw;
  36.     protected Map<String, Serializable> claims;
  37.     protected TipologiaClaims parser;
  38.     protected Properties parserConfig;
  39.    
  40.     public BasicTokenUserInfoParser(TipologiaClaims parser, Properties parserConfig) {
  41.         this.parser = parser;
  42.         this.parserConfig = parserConfig;
  43.     }
  44.    
  45.     @Override
  46.     public void init(String raw, Map<String, Serializable> claims) {
  47.         this.raw = raw;
  48.         this.claims = claims;
  49.     }

  50.     @Override
  51.     public String getFullName() {
  52.         switch (this.parser) {
  53.         case OIDC_ID_TOKEN:
  54.             return TokenUtilities.getClaimAsString(this.claims,Claims.OIDC_ID_CLAIMS_NAME);
  55.         case GOOGLE:
  56.             return TokenUtilities.getClaimAsString(this.claims,Claims.GOOGLE_CLAIMS_NAME);
  57.         case MAPPING:
  58.             List<String> claimNames = TokenUtilities.getClaims(this.parserConfig, Costanti.TOKEN_PARSER_USER_FULL_NAME);
  59.             return TokenUtilities.getFirstClaimAsString(this.claims, claimNames);
  60.         case JSON_WEB_TOKEN_RFC_7519:
  61.         case JSON_WEB_TOKEN_FOR_OAUTH2_ACCESS_TOKENS_RFC_9068:
  62.         case INTROSPECTION_RESPONSE_RFC_7662:
  63.         case CUSTOM:
  64.             return null;
  65.         }
  66.         return null;
  67.     }
  68.    
  69.     @Override
  70.     public String getFirstName() {
  71.         switch (this.parser) {
  72.         case OIDC_ID_TOKEN:
  73.             return TokenUtilities.getClaimAsString(this.claims,Claims.OIDC_ID_CLAIMS_GIVE_NAME);
  74.         case GOOGLE:
  75.             return TokenUtilities.getClaimAsString(this.claims,Claims.GOOGLE_CLAIMS_GIVE_NAME);
  76.         case MAPPING:
  77.             List<String> claimNames = TokenUtilities.getClaims(this.parserConfig, Costanti.TOKEN_PARSER_USER_FIRST_NAME);
  78.             return TokenUtilities.getFirstClaimAsString(this.claims, claimNames);
  79.         case JSON_WEB_TOKEN_RFC_7519:
  80.         case JSON_WEB_TOKEN_FOR_OAUTH2_ACCESS_TOKENS_RFC_9068:
  81.         case INTROSPECTION_RESPONSE_RFC_7662:
  82.         case CUSTOM:
  83.             return null;
  84.         }
  85.         return null;
  86.     }
  87.    
  88.     @Override
  89.     public String getMiddleName() {
  90.         switch (this.parser) {
  91.         case OIDC_ID_TOKEN:
  92.             return TokenUtilities.getClaimAsString(this.claims,Claims.OIDC_ID_CLAIMS_MIDDLE_NAME);
  93.         case GOOGLE:
  94.             return TokenUtilities.getClaimAsString(this.claims,Claims.GOOGLE_CLAIMS_MIDDLE_NAME);
  95.         case MAPPING:
  96.             List<String> claimNames = TokenUtilities.getClaims(this.parserConfig, Costanti.TOKEN_PARSER_USER_MIDDLE_NAME);
  97.             return TokenUtilities.getFirstClaimAsString(this.claims, claimNames);
  98.         case JSON_WEB_TOKEN_RFC_7519:
  99.         case JSON_WEB_TOKEN_FOR_OAUTH2_ACCESS_TOKENS_RFC_9068:
  100.         case INTROSPECTION_RESPONSE_RFC_7662:
  101.         case CUSTOM:
  102.             return null;
  103.         }
  104.         return null;
  105.     }
  106.    
  107.    
  108.     @Override
  109.     public String getFamilyName() {
  110.         switch (this.parser) {
  111.         case OIDC_ID_TOKEN:
  112.             String tmp = TokenUtilities.getClaimAsString(this.claims,Claims.OIDC_ID_CLAIMS_FAMILY_NAME);
  113.             if(tmp==null) {
  114.                 tmp = TokenUtilities.getClaimAsString(this.claims,Claims.OIDC_ID_CLAIMS_LAST_NAME);
  115.             }
  116.             return tmp;
  117.         case GOOGLE:
  118.             return TokenUtilities.getClaimAsString(this.claims,Claims.GOOGLE_CLAIMS_FAMILY_NAME);
  119.         case MAPPING:
  120.             List<String> claimNames = TokenUtilities.getClaims(this.parserConfig, Costanti.TOKEN_PARSER_USER_FAMILY_NAME);
  121.             return TokenUtilities.getFirstClaimAsString(this.claims, claimNames);
  122.         case JSON_WEB_TOKEN_RFC_7519:
  123.         case JSON_WEB_TOKEN_FOR_OAUTH2_ACCESS_TOKENS_RFC_9068:
  124.         case INTROSPECTION_RESPONSE_RFC_7662:
  125.         case CUSTOM:
  126.             return null;
  127.         }
  128.         return null;
  129.     }
  130.    
  131.    
  132.     @Override
  133.     public String getEMail() {
  134.         switch (this.parser) {
  135.         case OIDC_ID_TOKEN:
  136.             return TokenUtilities.getClaimAsString(this.claims,Claims.OIDC_ID_CLAIMS_EMAIL);
  137.         case GOOGLE:
  138.             return TokenUtilities.getClaimAsString(this.claims,Claims.GOOGLE_CLAIMS_EMAIL);
  139.         case MAPPING:
  140.             List<String> claimNames = TokenUtilities.getClaims(this.parserConfig, Costanti.TOKEN_PARSER_USER_EMAIL);
  141.             return TokenUtilities.getFirstClaimAsString(this.claims, claimNames);
  142.         case JSON_WEB_TOKEN_RFC_7519:
  143.         case JSON_WEB_TOKEN_FOR_OAUTH2_ACCESS_TOKENS_RFC_9068:
  144.         case INTROSPECTION_RESPONSE_RFC_7662:
  145.         case CUSTOM:
  146.             return null;
  147.         }
  148.         return null;
  149.     }
  150.    
  151.    
  152. }