org.opensaml.messaging.context.MessageContext.setMessage()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(14.3k)|赞(0)|评价(0)|浏览(157)

本文整理了Java中org.opensaml.messaging.context.MessageContext.setMessage()方法的一些代码示例,展示了MessageContext.setMessage()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。MessageContext.setMessage()方法的具体详情如下:
包路径:org.opensaml.messaging.context.MessageContext
类名称:MessageContext
方法名:setMessage

MessageContext.setMessage介绍

暂无

代码示例

代码示例来源:origin: line/armeria

messageContext.setMessage(message);

代码示例来源:origin: line/armeria

/**
 * Converts an {@link AggregatedHttpMessage} which is received from the remote entity to
 * a {@link SAMLObject}.
 */
static <T extends SAMLObject> MessageContext<T> toSamlObject(AggregatedHttpMessage msg, String name) {
  final SamlParameters parameters = new SamlParameters(msg);
  final byte[] decoded;
  try {
    decoded = Base64.getMimeDecoder().decode(parameters.getFirstValue(name));
  } catch (IllegalArgumentException e) {
    throw new SamlException("failed to decode a base64 string of the parameter: " + name, e);
  }
  @SuppressWarnings("unchecked")
  final T message = (T) deserialize(decoded);
  final MessageContext<T> messageContext = new MessageContext<>();
  messageContext.setMessage(message);
  final String relayState = parameters.getFirstValueOrNull(RELAY_STATE);
  if (relayState != null) {
    final SAMLBindingContext context = messageContext.getSubcontext(SAMLBindingContext.class, true);
    assert context != null;
    context.setRelayState(relayState);
  }
  return messageContext;
}

代码示例来源:origin: line/armeria

final AuthnRequest request = createAuthRequest(idp, defaultHostname);
  final MessageContext<AuthnRequest> messageContext = new MessageContext<>();
  messageContext.setMessage(request);
  return new MessageContextAndIdpConfig(messageContext, idp);
}).thenCompose(arg -> {

代码示例来源:origin: org.apereo.cas/cas-server-support-saml-idp-web

/**
 * Prepare outbound context.
 *
 * @param <T>             the type parameter
 * @param samlObject      the saml object
 * @param adaptor         the adaptor
 * @param outboundContext the outbound context
 * @param binding         the binding
 * @param authnRequest    the authn request
 * @throws SamlException the saml exception
 */
protected <T extends SAMLObject> void prepareOutboundContext(final T samlObject,
                               final SamlRegisteredServiceServiceProviderMetadataFacade adaptor,
                               final MessageContext<T> outboundContext,
                               final String binding,
                               final RequestAbstractType authnRequest) throws SamlException {
  LOGGER.trace("Outbound saml object to use is [{}]", samlObject.getClass().getName());
  outboundContext.setMessage(samlObject);
  SamlIdPUtils.preparePeerEntitySamlEndpointContext(authnRequest, outboundContext, adaptor, binding);
}

代码示例来源:origin: org.pac4j/pac4j-saml

protected MessageContext<Pac4jSAMLResponse> prepareOutboundMessageContext(final WebContext webContext) {
  final Pac4jSAMLResponse outTransport = new DefaultPac4jSAMLResponse(webContext);
  final MessageContext<Pac4jSAMLResponse> outCtx = new MessageContext<>();
  outCtx.setMessage(outTransport);
  return outCtx;
}

代码示例来源:origin: org.opensaml/opensaml-soap-impl

/** {@inheritDoc} */
protected void doInvoke(@Nonnull MessageContext<Envelope> messageContext) throws MessageHandlerException {
  Envelope env = (Envelope) messageContext.getSubcontext(SOAP11Context.class).getEnvelope();
  if (env == null) {
    throw new MessageHandlerException("MessageContext did not contain a SOAP Envelope");
  }
  messageContext.setMessage(env);
}

代码示例来源:origin: org.opensaml/opensaml-soap-impl

/** {@inheritDoc} */
protected void doInvoke(MessageContext messageContext) throws MessageHandlerException {
  Envelope env = (Envelope) messageContext.getSubcontext(SOAP11Context.class).getEnvelope();
  List<XMLObject> bodyChildren = env.getBody().getUnknownXMLObjects();
  if (bodyChildren == null || bodyChildren.isEmpty()) {
    throw new MessageHandlerException("SOAP Envelope Body contained no children");
  } else if (bodyChildren.size() > 1) {
    log.warn("SOAP Envelope Body contained more than one child.  Returning the first as the message");
  }
    
  messageContext.setMessage(env.getBody().getUnknownXMLObjects().get(0));
}

代码示例来源:origin: org.opensaml/opensaml-saml-impl

/** {@inheritDoc} */
  @Override
  @Nullable public List<Assertion> apply(@Nullable final ProfileRequestContext input) {
    if (input != null && input.getOutboundMessageContext() != null) {
      final Object outboundMessage = input.getOutboundMessageContext().getMessage();
      if (outboundMessage == null) {
        final Assertion ret = SAML2ActionSupport.buildAssertion(AddNameIDToSubjects.this,
            idGenerator, issuerId);
        input.getOutboundMessageContext().setMessage(ret);
        return Collections.singletonList(ret);
      } else if (outboundMessage instanceof Assertion) {
        return Collections.singletonList((Assertion) outboundMessage);
      } else if (outboundMessage instanceof Response) {
        return ((Response) outboundMessage).getAssertions();
      }
    }
    
    return null;
  }
}

代码示例来源:origin: org.opensaml/opensaml-soap-impl

/** {@inheritDoc} */
@Override
protected boolean doPreExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
  ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
  detailedErrors = detailedErrorsCondition.apply(profileRequestContext);
  
  log.debug("{} Detailed errors are {}", getLogPrefix(), detailedErrors ? "enabled" : "disabled");
  if (profileRequestContext.getOutboundMessageContext() != null && nullifyOutboundMessage) {
    profileRequestContext.getOutboundMessageContext().setMessage(null);
  } else {
    profileRequestContext.setOutboundMessageContext(new MessageContext<Object>());
  }
  
  return super.doPreExecute(profileRequestContext);
}

代码示例来源:origin: org.opensaml/opensaml-saml-impl

/** {@inheritDoc} */
protected void doDecode() throws MessageDecodingException {
  MessageContext<SAMLObject> messageContext = new MessageContext<>();
  HttpServletRequest request = getHttpServletRequest();
  if (!"POST".equalsIgnoreCase(request.getMethod())) {
    throw new MessageDecodingException("This message decoder only supports the HTTP POST method");
  }
  String relayState = request.getParameter("TARGET");
  log.debug("Decoded SAML relay state (TARGET parameter) of: {}", relayState);
  SAMLBindingSupport.setRelayState(messageContext, relayState);
  String base64Message = request.getParameter("SAMLResponse");
  byte[] decodedBytes = Base64Support.decode(base64Message);
  if (decodedBytes == null) {
    log.error("Unable to Base64 decode SAML message");
    throw new MessageDecodingException("Unable to Base64 decode SAML message");
  }
  SAMLObject inboundMessage = (SAMLObject) unmarshallMessage(new ByteArrayInputStream(decodedBytes));
  messageContext.setMessage(inboundMessage);
  log.debug("Decoded SAML message");
  populateBindingContext(messageContext);
  
  setMessageContext(messageContext);
}

代码示例来源:origin: org.opensaml/opensaml-saml-impl

/** {@inheritDoc} */
protected void doDecode() throws MessageDecodingException {
  MessageContext<SAMLObject> messageContext = new MessageContext<>();
  HttpServletRequest request = getHttpServletRequest();
  if (!"POST".equalsIgnoreCase(request.getMethod())) {
    throw new MessageDecodingException("This message decoder only supports the HTTP POST method");
  }
  String relayState = request.getParameter("RelayState");
  log.debug("Decoded SAML relay state of: {}", relayState);
  SAMLBindingSupport.setRelayState(messageContext, relayState);
  InputStream base64DecodedMessage = getBase64DecodedMessage(request);
  SAMLObject inboundMessage = (SAMLObject) unmarshallMessage(base64DecodedMessage);
  messageContext.setMessage(inboundMessage);
  log.debug("Decoded SAML message");
  populateBindingContext(messageContext);
  
  setMessageContext(messageContext);
}

代码示例来源:origin: net.shibboleth.idp/idp-saml-impl

/** {@inheritDoc} */
@Override
protected void doDecode() throws MessageDecodingException {
  ssoRequest = buildIdPInitiatedSSORequest();
  
  final MessageContext<SAMLObject> messageContext = new MessageContext<>();
  messageContext.setMessage(buildAuthnRequest());
  
  populateBindingContext(messageContext);
  
  setMessageContext(messageContext);
}

代码示例来源:origin: org.apereo.cas/cas-server-support-saml-idp-web

/**
 * Build encoder message context.
 *
 * @param request    the authn request
 * @param samlObject the saml response
 * @param relayState the relay state
 * @return the message context
 */
protected MessageContext getEncoderMessageContext(final RequestAbstractType request, final T samlObject, final String relayState) {
  val ctx = new MessageContext<SAMLObject>();
  ctx.setMessage(samlObject);
  SAMLBindingSupport.setRelayState(ctx, relayState);
  SamlIdPUtils.preparePeerEntitySamlEndpointContext(request, ctx, adaptor, getBinding());
  val self = ctx.getSubcontext(SAMLSelfEntityContext.class, true);
  self.setEntityId(SamlIdPUtils.getIssuerFromSamlObject(samlObject));
  return ctx;
}

代码示例来源:origin: org.opensaml/opensaml-soap-impl

/** {@inheritDoc} */
public void prepareContext() throws MessageEncodingException {
  MessageContext<MessageType> messageContext = getMessageContext();
  XMLObject payload = null;
  
  Fault fault = SOAPMessagingSupport.getSOAP11Fault(messageContext);
  if (fault != null) {
    log.debug("Saw SOAP 1.1 Fault payload with fault code, replacing any existing context message: {}", 
        fault.getCode() != null ? fault.getCode().getValue() : null);
    payload = fault;
    messageContext.setMessage(null);
  } else {
    payload = messageContext.getMessage();
  }
  
  if (payload == null) {
    throw new MessageEncodingException("No outbound message or Fault contained in message context");
  }
  
  if (payload instanceof Envelope) {
    storeSOAPEnvelope((Envelope) payload);
  } else {
    buildAndStoreSOAPMessage(payload);
  }
  
}

代码示例来源:origin: net.shibboleth.idp/idp-saml-impl

/** {@inheritDoc} */
public void prepareContext() throws MessageEncodingException {
  final MessageContext<SAMLObject> messageContext = getMessageContext();
  XMLObject payload = null;
  
  final Fault fault = SOAPMessagingSupport.getSOAP11Fault(messageContext);
  if (fault != null) {
    log.debug("Saw SOAP 1.1 Fault payload with fault code, replacing any existing context message: {}", 
        fault.getCode() != null ? fault.getCode().getValue() : null);
    payload = fault;
    messageContext.setMessage(null);
  } else {
    payload = messageContext.getMessage();
  }
  
  if (payload == null) {
    throw new MessageEncodingException("No outbound message or Fault contained in message context");
  }
  
  if (payload instanceof Envelope) {
    storeSOAPEnvelope((Envelope) payload);
  } else {
    buildAndStoreSOAPMessage(payload);
  }
  
}

代码示例来源:origin: net.shibboleth.idp/idp-saml-impl

/** {@inheritDoc} */
@Override
protected void doDecode() throws MessageDecodingException {
  final IdPInitiatedSSORequest ssoRequest = buildIdPInitiatedSSORequest();
  final MessageContext<IdPInitiatedSSORequest> messageContext = new MessageContext<>();
  messageContext.setMessage(ssoRequest);
  
  messageContext.getSubcontext(SAMLPeerEntityContext.class, true).setEntityId(ssoRequest.getEntityId());
  
  final SAMLMessageInfoContext msgInfoContext = messageContext.getSubcontext(SAMLMessageInfoContext.class, true);
  msgInfoContext.setMessageIssueInstant(new DateTime(ssoRequest.getTime(), ISOChronology.getInstanceUTC()));
  msgInfoContext.setMessageId(getMessageID());
  
  populateBindingContext(messageContext);
  setMessageContext(messageContext);
}

代码示例来源:origin: org.opensaml/opensaml-saml-impl

/** {@inheritDoc} */
@Override
protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
  final XMLObjectBuilderFactory bf = XMLObjectProviderRegistrySupport.getBuilderFactory();
  final SAMLObjectBuilder<StatusCode> statusCodeBuilder =
      (SAMLObjectBuilder<StatusCode>) bf.<StatusCode>getBuilderOrThrow(StatusCode.DEFAULT_ELEMENT_NAME);
  final SAMLObjectBuilder<Status> statusBuilder =
      (SAMLObjectBuilder<Status>) bf.<Status>getBuilderOrThrow(Status.DEFAULT_ELEMENT_NAME);
  final SAMLObjectBuilder<Response> responseBuilder =
      (SAMLObjectBuilder<Response>) bf.<Response>getBuilderOrThrow(Response.DEFAULT_ELEMENT_NAME);
  final StatusCode statusCode = statusCodeBuilder.buildObject();
  statusCode.setValue(StatusCode.SUCCESS);
  final Status status = statusBuilder.buildObject();
  status.setStatusCode(statusCode);
  final Response response = responseBuilder.buildObject();
  response.setID(idGenerator.generateIdentifier());
  response.setIssueInstant(new DateTime(ISOChronology.getInstanceUTC()));
  response.setStatus(status);
  response.setVersion(SAMLVersion.VERSION_11);
  profileRequestContext.getOutboundMessageContext().setMessage(response);
}

代码示例来源:origin: org.apereo.cas/cas-server-support-saml-idp-web

@Override
protected void doEncode() throws MessageEncodingException {
  val messageContext = new MessageContext();
  if (logoutRequest.isSigned()) {
    val signingContext = messageContext.getSubcontext(SecurityParametersContext.class, true);
    val signingParams = new SignatureSigningParameters();
    val signature = logoutRequest.getSignature();
    signingParams.setSigningCredential(signature.getSigningCredential());
    signingParams.setSignatureAlgorithm(signature.getSignatureAlgorithm());
    signingContext.setSignatureSigningParameters(signingParams);
  }
  removeSignature(logoutRequest);
  val encodedMessage = deflateAndBase64Encode(logoutRequest);
  messageContext.setMessage(logoutRequest);
  this.redirectUrl = buildRedirectURL(messageContext, endpointUrl, encodedMessage);
}

代码示例来源:origin: net.shibboleth.idp/idp-profile-impl

/** {@inheritDoc} */
@Override
protected void doDecode() throws MessageDecodingException {
  final HttpServletRequest request = getHttpServletRequest();
  if (request == null) {
    throw new MessageDecodingException("Unable to locate HttpServletRequest");
  }
  
  final ResolverTestRequest message = new ResolverTestRequest(getPrincipal(request), getRequesterId(request),
      getIndex(request), getProtocol(request));
  final MessageContext<ResolverTestRequest> messageContext = new MessageContext<>();
  messageContext.setMessage(message);
  setMessageContext(messageContext);
  
  final SAMLPeerEntityContext peerCtx = new SAMLPeerEntityContext();
  peerCtx.setRole(SPSSODescriptor.DEFAULT_ELEMENT_NAME);
  peerCtx.setEntityId(message.getRequesterId());
  messageContext.addSubcontext(peerCtx, true);
  
  if (message.getProtocol() != null) {
    messageContext.getSubcontext(SAMLProtocolContext.class, true).setProtocol(message.getProtocol());
  }
}

代码示例来源:origin: net.shibboleth.idp/idp-profile-impl

/** {@inheritDoc} */
@Override
protected void doDecode() throws MessageDecodingException {
  final HttpServletRequest request = getHttpServletRequest();
  if (request == null) {
    throw new MessageDecodingException("Unable to locate HttpServletRequest");
  }
  
  final MetadataQueryRequest message = new MetadataQueryRequest();
  message.setEntityID(getEntityID(request));
  message.setProtocol(getProtocol(request));
  
  final MessageContext<MetadataQueryRequest> messageContext = new MessageContext<>();
  messageContext.setMessage(message);
  setMessageContext(messageContext);
  
  final SAMLPeerEntityContext peerCtx = new SAMLPeerEntityContext();
  peerCtx.setRole(SPSSODescriptor.DEFAULT_ELEMENT_NAME);
  peerCtx.setEntityId(message.getEntityID());
  messageContext.addSubcontext(peerCtx, true);
  
  if (message.getProtocol() != null) {
    messageContext.getSubcontext(SAMLProtocolContext.class, true).setProtocol(message.getProtocol());
  }
}

相关文章

微信公众号

最新文章

更多