| 
									
										
										
										
											2021-08-20 10:58:07 -07:00
										 |  |  | package auth.sso;
 | 
					
						
							| 
									
										
										
										
											2021-08-20 07:42:18 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | import org.pac4j.core.client.Client;
 | 
					
						
							| 
									
										
										
										
											2022-12-08 20:27:51 -06:00
										 |  |  | import org.pac4j.core.credentials.Credentials;
 | 
					
						
							| 
									
										
										
										
											2021-08-20 07:42:18 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * A thin interface over a Pac4j {@link Client} object and its
 | 
					
						
							|  |  |  |  * associated configurations.
 | 
					
						
							|  |  |  |  */
 | 
					
						
							|  |  |  | public interface SsoProvider<C extends SsoConfigs> {
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /**
 | 
					
						
							|  |  |  |    * The protocol used for SSO.
 | 
					
						
							|  |  |  |    */
 | 
					
						
							|  |  |  |   enum SsoProtocol {
 | 
					
						
							|  |  |  |     OIDC("oidc");
 | 
					
						
							|  |  |  |     // SAML -- not yet supported.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Common name appears in the Callback URL itself.
 | 
					
						
							|  |  |  |     private final String _commonName;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public String getCommonName() {
 | 
					
						
							|  |  |  |       return _commonName;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SsoProtocol(String commonName) {
 | 
					
						
							|  |  |  |       _commonName = commonName;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /**
 | 
					
						
							|  |  |  |    * Returns the configs required by the provider.
 | 
					
						
							|  |  |  |    */
 | 
					
						
							|  |  |  |   C configs();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /**
 | 
					
						
							|  |  |  |    * Returns the SSO protocol associated with the provider instance.
 | 
					
						
							|  |  |  |    */
 | 
					
						
							|  |  |  |   SsoProtocol protocol();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /**
 | 
					
						
							|  |  |  |    * Retrieves an initialized Pac4j {@link Client}.
 | 
					
						
							|  |  |  |    */
 | 
					
						
							| 
									
										
										
										
											2022-12-08 20:27:51 -06:00
										 |  |  |   Client<? extends Credentials> client();
 | 
					
						
							| 
									
										
										
										
											2021-08-20 07:42:18 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | }
 |