/** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved * * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at * https://opensso.dev.java.net/public/CDDLv1.0.html or * opensso/legal/CDDLv1.0.txt * See the License for the specific language governing * permission and limitations under the License. * * When distributing Covered Code, include this CDDL * Header Notice in each file and include the License file * at opensso/legal/CDDLv1.0.txt. * If applicable, add the following below the CDDL Header, * with the fields enclosed by brackets [] replaced by * your own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" * * $Id: SSOTokenSampleServlet.java,v 1.4 2008/10/29 03:16:04 veiming Exp $ * */ /** * Portions Copyrighted 2013-2016 ForgeRock AS. */ package com.sun.identity.samples.sso; import com.iplanet.sso.SSOException; import com.iplanet.sso.SSOToken; import com.iplanet.sso.SSOTokenID; import com.iplanet.sso.SSOTokenListener; import com.iplanet.sso.SSOTokenListenersUnsupportedException; import com.iplanet.sso.SSOTokenManager; import com.sun.identity.idm.AMIdentity; import com.sun.identity.idm.IdRepoException; import com.sun.identity.idm.IdUtils; import java.io.IOException; import java.net.InetAddress; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * This Sample serves as a basis for using SSO API. It demonstrates creating * a SSO Token, calling various methods from the token, setting up event * listeners and getting called on event listeners. * * @see com.iplanet.sso.SSOToken * @see com.iplanet.sso.SSOTokenID * @see com.iplanet.sso.SSOTokenManager * @see com.iplanet.sso.SSOTokenEvent * @see com.iplanet.sso.SSOTokenListener */ public class SSOTokenSampleServlet extends HttpServlet { public void init() throws ServletException { } public void doGet(HttpServletRequest request, HttpServletResponse response){ ServletOutputStream out = null; try { try { response.setContentType("text/html"); out = response.getOutputStream(); // create the sso token from http request SSOTokenManager manager = SSOTokenManager.getInstance(); SSOToken token = manager.createSSOToken(request); if (manager.isValidToken(token)) { //print some of the values from the token. String host = token.getHostName(); java.security.Principal principal = token.getPrincipal(); String authType = token.getAuthType(); int level = token.getAuthLevel(); InetAddress ipAddress = token.getIPAddress(); out.println("SSOToken host name: " + host); out.println("
"); out.println("SSOToken Principal name: " + principal.getName()); out.println("
"); out.println("Authentication type used: " + authType); out.println("
"); out.println("IPAddress of the host: " + ipAddress.getHostAddress()); out.println("
"); } /* Validate the token again, with another method. * if token is invalid, this method throws exception */ manager.validateToken(token); out.println("SSO Token validation test succeeded"); out.println("
"); // Get the SSOTokenID associated with the token and print it. SSOTokenID tokenId = token.getTokenID(); out.println("The token id is " + tokenId.toString()); out.println("
"); // Set and get some properties in the token. token.setProperty("Company", "Sun Microsystems"); token.setProperty("Country", "USA"); String name = token.getProperty("Company"); String country = token.getProperty("Country"); out.println("Property: Company: " + name); out.println("
"); out.println("Property: Country: " + country); out.println("
"); // Retrieve user profile and print them AMIdentity userIdentity = IdUtils.getIdentity(token); Map attrs = userIdentity.getAttributes(); out.println("User Attributes: " + attrs); /* let us add a listener to the SSOToken. Whenever a token * event arrives, ssoTokenChanged method of the listener will * get called. */ SSOTokenListener myListener = new SampleTokenListener(); token.addSSOTokenListener(myListener); } catch (SSOTokenListenersUnsupportedException e) { out.println("SSO Exception: " + e); e.printStackTrace(); } catch (SSOException e) { out.println("SSO Exception: " + e); out.println("

Authenticate to OpenAM server before visiting this page.

"); e.printStackTrace(); } catch (IdRepoException e) { out.println("IdRepo Exception: " + e); e.printStackTrace(); } catch (IOException e) { out.println("IO Exception: " + e); e.printStackTrace(); } finally { out.flush(); } } catch (IOException e) { // ignored } } }