userconsole.jsp revision b93185b577f7150fec37f9999b95b246d73bf63c
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%--
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync The contents of this file are subject to the terms
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync of the Common Development and Distribution License
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync (the License). You may not use this file except in
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync compliance with the License.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync You can obtain a copy of the License at
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync https://opensso.dev.java.net/public/CDDLv1.0.html or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync opensso/legal/CDDLv1.0.txt
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync See the License for the specific language governing
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync permission and limitations under the License.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync When distributing Covered Code, include this CDDL
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync Header Notice in each file and include the License file
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync at opensso/legal/CDDLv1.0.txt.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync If applicable, add the following below the CDDL Header,
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync with the fields enclosed by brackets [] replaced by
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync your own identifying information:
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync "Portions Copyrighted [year] [name of copyright owner]"
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync $Id: userconsole.jsp,v 1.3 2010/01/20 17:51:38 huacui Exp $
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync--%>
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync<%--
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync Portions Copyrighted 2012 ForgeRock AS
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync--%>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page contentType="text/html"%>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page pageEncoding="UTF-8"%>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page import="com.sun.identity.oauth.service.OAuthServiceException" %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page import="com.sun.identity.oauth.service.PathDefs" %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page import="com.sun.identity.oauth.service.util.OAuthProperties" %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page import="com.sun.identity.oauth.service.util.OAuthServiceUtils" %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page import="java.net.URLEncoder" %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page import="javax.servlet.http.Cookie" %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page import="javax.servlet.http.HttpServletRequest" %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@page import="javax.servlet.http.HttpServletResponse" %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%--
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncThe taglib directive below imports the JSTL library. If you uncomment it,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncyou must also add the JSTL library to the project. The Add Library... action
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncon Libraries node in Projects view can be used to add the JSTL 1.1 library.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync--%>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%--
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync--%>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <%!
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync static String openssoCookieName = OAuthProperties.get(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PathDefs.OPENSSO_COOKIE_NAME);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync String getUid(String cookieValue)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync throws OAuthServiceException {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync String uuid = null;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync try {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid = OAuthServiceUtils.getUUIDByTokenId(cookieValue);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } catch (OAuthServiceException oe) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync throw oe;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return uuid;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync "http://www.w3.org/TR/html4/loose.dtd">
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync<html>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <head>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <title>Authentication</title>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <script type="text/javascript">
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync function makeithappen(oauthtk, id) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync var path = window.location.pathname;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync var strs = path.split("/");
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync var contextRoot = strs[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync var redir = window.location.protocol;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redir += "//" + window.location.host;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redir += "/" + contextRoot;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redir += "/resources/1/oauth/AuthorizationFactory";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redir += "?oauth_token=" + oauthtk.toString();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redir += "&id=" + id.toString();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync window.location = redir;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync function revoke(oauthtk) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync var redir = "./deletetoken.jsp?oauth_token=";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redir += oauthtk.toString();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync window.location = redir;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync </script>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync </head>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <body>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <h1 align="center">OAuth User Authorization Page</h1><hr>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <%
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync String otk = request.getParameter("oauth_token");
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (otk == null) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync out.println("<h1>Error</h1><h2>OAuth token is missing.</h2>");
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync otk = java.net.URLEncoder.encode(otk);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync String uid = null;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HttpServletRequest httpRequest = (HttpServletRequest)request;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HttpServletResponse httpResponse = (HttpServletResponse)response;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync Cookie[] cookies = httpRequest.getCookies();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (cookies != null && cookies.length > 0) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync for (int i=0; i < cookies.length; i++) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync Cookie nextCookie = cookies[i];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync String name = nextCookie.getName();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync String value = nextCookie.getValue();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (name.equals(openssoCookieName)) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync try {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (OAuthServiceUtils.isTokenValid(value)) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync // get the UUID of the user based on the OpenAM session cookie
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uid = getUid(value);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } catch (OAuthServiceException oe) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uid = null;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync //throw new ServletException(oe.getMessage());
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync break;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (uid == null) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync // session is not valid so redirect the user to OpenAM login page
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync String loginURL =
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync OAuthProperties.get(PathDefs.OPENSSO_SERVER_URL) +
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync OAuthProperties.get(PathDefs.OPENSSO_SERVER_LOGIN_URI);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync StringBuffer requestURL = httpRequest.getRequestURL();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync String query = httpRequest.getQueryString();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (query != null) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync requestURL.append("?").append(query);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync StringBuffer redirectURL = new StringBuffer();
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redirectURL.append(loginURL);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if (loginURL.indexOf("?") > 0) {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redirectURL.append("&");
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } else {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redirectURL.append("?");
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redirectURL.append("goto");
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redirectURL.append("=");
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync redirectURL.append(URLEncoder.encode(requestURL.toString()));
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync httpResponse.sendRedirect(redirectURL.toString());
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync }
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync out.println("User ID: " + uid + "<br>");
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uid = java.net.URLEncoder.encode(uid);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync %>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <hr><br>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <h2>Do you authorize the Service Consumer to access your resource?</h2>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <form name="AuthoriseToken" >
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <input type="button" onclick="revoke('<%= otk%>')" value="Revoke" name="Revoke">
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <input type="button" onclick="makeithappen('<%= otk%>', '<%= uid%>')" value="Authorize" name="Authorize">
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync </form>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync <hr>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync </body>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync</html>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync