/** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2009 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: SsoServerSAML2SvcImpl.java,v 1.3 2009/10/21 00:03:14 bigfatrat Exp $ * */ /* * Portions Copyrighted 2011 ForgeRock AS */ package com.sun.identity.monitoring; import com.sun.identity.shared.debug.Debug; import com.sun.management.snmp.agent.SnmpMib; import javax.management.MBeanServer; /** * This class extends the "SsoServerSAML2Svc" class. */ public class SsoServerSAML2SvcImpl extends SsoServerSAML2Svc { private static Debug debug = null; public static final String IDP_ARTIF_CACHE = "idpArtifCache"; public static final String IDP_ARTIF_ISSUED = "idpArtifIssued"; public static final String IDP_ASSERT_CACHE = "idpAssertCache"; public static final String IDP_ASSERT_ISSUED = "idpAssertIssued"; public static final String IDP_RQTS_RCVD = "idpRqtRcvd"; public static final String IDP_INVAL_RQTS_RCVD = "idpInvalRqtRcvd"; public static final String SP_VAL_ASSERTS_RCVD = "spValidAssertRcvd"; public static final String SP_RQTS_SENT = "spRqtSent"; public static final String SP_INVAL_ARTIFS_RCVD = "spInvalArtifRcvd"; /** * Constructor */ public SsoServerSAML2SvcImpl (SnmpMib myMib) { super(myMib); init(myMib, null); } public SsoServerSAML2SvcImpl (SnmpMib myMib, MBeanServer server) { super(myMib, server); init(myMib, server); } private void init (SnmpMib myMib, MBeanServer server) { if (debug == null) { debug = Debug.getInstance("amMonitoring"); } } public void incHostedIDPCount() { setStatus(); long li = SAML2HostedIDPCount.longValue(); li++; SAML2HostedIDPCount = Long.valueOf(li); } public void incRemoteIDPCount() { setStatus(); long li = SAML2RemoteIDPCount.longValue(); li++; SAML2RemoteIDPCount = Long.valueOf(li); } public void incFedSessionCount() { setStatus(); long li = SAML2FedSessionCount.longValue(); li++; SAML2FedSessionCount = Long.valueOf(li); } public void decFedSessionCount() { long li = SAML2FedSessionCount.longValue(); li--; SAML2FedSessionCount = Long.valueOf(li); } public void setFedSessionCount(long count) { setStatus(); SAML2FedSessionCount = Long.valueOf(count); } public void incIdpSessionCount() { setStatus(); long li = SAML2IDPSessionCount.longValue(); li++; SAML2IDPSessionCount = Long.valueOf(li); } public void decIdpSessionCount() { long li = SAML2IDPSessionCount.longValue(); li--; SAML2IDPSessionCount = Long.valueOf(li); } public void setIdpSessionCount(long count) { setStatus(); SAML2IDPSessionCount = Long.valueOf(count); } public void incIDPCounter (String realm, String idpName, String counter) { String classMethod = "SsoServerSAML2SvcImpl.incIDPCounter:"; setStatus(); /* * given the realm's and IDP's name, get the corresponding * entry in the SAML2IDP table. * remember that the IDP's name must be "colon-corrected". * * realm name might have to be orgDN, then converted to * "/"-separated form like in SsoServerAuthSvcImpl.java. */ String entName = idpName; if (entName.indexOf(":") >= 0) { entName = entName.replaceAll(":", ":"); } entName = realm + "|" + entName; SsoServerSAML2IDPEntryImpl ssei = Agent.getSAML2IDPEntry(entName); if (ssei == null) { debug.error(classMethod + "no SAML2IDP entry for realm/idp: " + entName); return; } if (counter.equals(SsoServerSAML2SvcImpl.IDP_ARTIF_CACHE)) { ssei.incSAML2IDPArtifsInCache(); } else if (counter.equals(SsoServerSAML2SvcImpl.IDP_ARTIF_ISSUED)) { ssei.incSAML2IDPArtifsIssued(); } else if (counter.equals(SsoServerSAML2SvcImpl.IDP_ASSERT_CACHE)) { ssei.incSAML2IDPAssertsInCache(); } else if (counter.equals(SsoServerSAML2SvcImpl.IDP_ASSERT_ISSUED)) { ssei.incSAML2IDPAssertsIssued(); } else if (counter.equals(SsoServerSAML2SvcImpl.IDP_RQTS_RCVD)) { ssei.incSAML2IDPRqtsRcvd(); } else if (counter.equals(SsoServerSAML2SvcImpl.IDP_INVAL_RQTS_RCVD)) { ssei.incSAML2IDPInvalRqtsRcvd(); } else { debug.error(classMethod + "unknown SAML2IDP counter: " + counter); } } public void decIDPCounter (String realm, String idpName, String counter) { String classMethod = "SsoServerSAML2SvcImpl.decIDPCounter:"; /* * given the realm's and IDP's name, get the corresponding * entry in the SAML2IDP table. * remember that the IDP's name must be "colon-corrected". * * realm name might have to be orgDN, then converted to * "/"-separated form like in SsoServerAuthSvcImpl.java. */ String entName = idpName; if (entName.indexOf(":") >= 0) { entName = entName.replaceAll(":", ":"); } entName = realm + "|" + entName; SsoServerSAML2IDPEntryImpl ssei = Agent.getSAML2IDPEntry(entName); if (ssei == null) { debug.error(classMethod + "no SAML2IDP entry for realm/idp: " + entName); return; } // only artifacts and assertions in cache counts decremented if (counter.equals(SsoServerSAML2SvcImpl.IDP_ARTIF_CACHE)) { ssei.decSAML2IDPArtifsInCache(); } else if (counter.equals(SsoServerSAML2SvcImpl.IDP_ASSERT_CACHE)) { ssei.decSAML2IDPAssertsInCache(); } else { debug.error(classMethod + "unknown SAML2IDP counter: " + counter); } } public void incSPCounter (String realm, String spName, String counter) { String classMethod = "SsoServerSAML2SvcImpl.incSPCounter:"; /* * given the realm's and SP's name, get the corresponding * entry in the SAML2SP table. * remember that the SP's name must be "colon-corrected". * * realm name might have to be orgDN, then converted to * "/"-separated form like in SsoServerAuthSvcImpl.java. */ String entName = spName; if (entName.indexOf(":") >= 0) { entName = entName.replaceAll(":", ":"); } setStatus(); entName = realm + "|" + entName; SsoServerSAML2SPEntryImpl ssei = Agent.getSAML2SPEntry(entName); if (ssei == null) { debug.error(classMethod + "no SAML2SP entry for realm/sp: " + entName); return; } if (counter.equals(SsoServerSAML2SvcImpl.SP_VAL_ASSERTS_RCVD)) { ssei.incSAML2SPValidAssertsRcvd(); } else if (counter.equals(SsoServerSAML2SvcImpl.SP_RQTS_SENT)) { ssei.incSAML2SPRqtsSent(); } else if (counter.equals(SsoServerSAML2SvcImpl.SP_INVAL_ARTIFS_RCVD)){ ssei.incSAML2SPInvalArtifsRcvd(); } } private void setStatus() { if (SAML2Status.equals("dormant")) { SAML2Status = "operational"; } } }