本文整理了Java中org.opensaml.messaging.context.MessageContext
类的一些代码示例,展示了MessageContext
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。MessageContext
类的具体详情如下:
包路径:org.opensaml.messaging.context.MessageContext
类名称:MessageContext
暂无
代码示例来源:origin: line/armeria
/**
* Invoked when the SAML authentication process is finished and a user is authenticated. You can get
* information about the authenticated user from the {@link Response}, especially his or her login name.
* In this example, an email address is used as a login name. The login name is transferred to a web
* browser via {@code Set-Cookie} header.
*/
@Override
public HttpResponse loginSucceeded(ServiceRequestContext ctx, AggregatedHttpMessage req,
MessageContext<Response> message, @Nullable String sessionIndex,
@Nullable String relayState) {
final String username =
getNameId(message.getMessage(), SamlNameIdFormat.EMAIL).map(NameIDType::getValue)
.orElse(null);
if (username == null) {
return HttpResponse.of(HttpStatus.UNAUTHORIZED, MediaType.HTML_UTF_8,
"<html><body>Username is not found.</body></html>");
}
logger.info("{} user '{}' has been logged in.", ctx, username);
final Cookie cookie = new DefaultCookie("username", username);
cookie.setHttpOnly(true);
cookie.setDomain("localhost");
cookie.setMaxAge(60);
cookie.setPath("/");
return HttpResponse.of(
HttpHeaders.of(HttpStatus.OK)
.contentType(MediaType.HTML_UTF_8)
.add(HttpHeaderNames.SET_COOKIE, ServerCookieEncoder.LAX.encode(cookie)),
HttpData.ofUtf8("<html><body onLoad=\"window.location.href='/welcome'\"></body></html>"));
}
代码示例来源:origin: line/armeria
AggregatedHttpMessage msg, String name,
Map<String, SamlIdentityProviderConfig> idpConfigs,
@Nullable SamlIdentityProviderConfig defaultIdpConfig) {
requireNonNull(msg, "msg");
requireNonNull(name, "name");
final T message = (T) fromDeflatedBase64(parameters.getFirstValue(name));
final MessageContext<T> messageContext = new MessageContext<>();
messageContext.setMessage(message);
final SAMLBindingContext context = messageContext.getSubcontext(SAMLBindingContext.class, true);
assert context != null;
context.setRelayState(relayState);
代码示例来源: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
@Override
public HttpResponse serve(ServiceRequestContext ctx, AggregatedHttpMessage msg,
String defaultHostname, SamlPortConfig portConfig) {
try {
final MessageContext<Response> messageContext;
if (cfg.endpoint().bindingProtocol() == SamlBindingProtocol.HTTP_REDIRECT) {
messageContext = HttpRedirectBindingUtil.toSamlObject(msg, SAML_RESPONSE,
idpConfigs, defaultIdpConfig);
} else {
messageContext = HttpPostBindingUtil.toSamlObject(msg, SAML_RESPONSE);
}
final String endpointUri = cfg.endpoint().toUriString(portConfig.scheme().uriText(),
defaultHostname, portConfig.port());
final Response response = messageContext.getMessage();
final Assertion assertion = getValidatedAssertion(response, endpointUri);
// Find a session index which is sent by an identity provider.
final String sessionIndex = assertion.getAuthnStatements().stream()
.map(AuthnStatement::getSessionIndex)
.filter(Objects::nonNull)
.findFirst().orElse(null);
final SAMLBindingContext bindingContext = messageContext.getSubcontext(SAMLBindingContext.class);
final String relayState = bindingContext != null ? bindingContext.getRelayState() : null;
return ssoHandler.loginSucceeded(ctx, msg, messageContext, sessionIndex, relayState);
} catch (SamlException e) {
return ssoHandler.loginFailed(ctx, msg, null, e);
}
}
代码示例来源:origin: org.opensaml/opensaml-saml-api
/**
* Get the artifact context.
*
* @param requestContext the current message context
* @return the SAML artifact context, or null
*/
@Nullable protected SAMLArtifactContext getArtifactContext(
@Nonnull final MessageContext<SAMLObject> requestContext) {
return requestContext.getSubcontext(SAMLArtifactContext.class);
}
代码示例来源:origin: org.opensaml/opensaml-saml-impl
/** {@inheritDoc} */
@Override
protected void setAuthenticatedState(@Nonnull final MessageContext messageContext, final boolean authenticated) {
log.trace("Storing authenticated entity state '{}' in context: {}", authenticated, entityContextClass);
messageContext.getSubcontext(entityContextClass, true).setAuthenticated(authenticated);
}
代码示例来源: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-saml-api
/** {@inheritDoc} */
@Override
@Nullable public Boolean apply(@Nullable final MessageContext input) {
if (input != null) {
final AbstractAuthenticatableSAMLEntityContext entityCtx = input.getSubcontext(entityContextClass);
if (entityCtx != null) {
return entityCtx.isAuthenticated();
}
}
return null;
}
代码示例来源:origin: org.opensaml/opensaml-saml-api
@Nullable public static String getIntendedDestinationEndpointURI(
@Nonnull final MessageContext<SAMLObject> messageContext) throws MessageException {
final SAMLObject samlMessage = Constraint.isNotNull(messageContext.getMessage(),
"SAML message was not present in message context");
String messageDestination = null;
代码示例来源:origin: org.opensaml/opensaml-saml-impl
/** {@inheritDoc} */
@Override
protected boolean doPreInvoke(@Nonnull final MessageContext messageContext) throws MessageHandlerException {
if (!super.doPreInvoke(messageContext) || messageContext.getMessage() == null) {
return false;
} else if (!SAMLBindingSupport.isMessageSigned(messageContext)) {
log.debug("Message was not signed, cannot extract ChannelBindings from it");
return false;
}
return true;
}
代码示例来源:origin: net.shibboleth.idp/idp-saml-impl
/** {@inheritDoc} */
@Override protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
final MessageContext msgCtx = new MessageContext();
profileRequestContext.setInboundMessageContext(msgCtx);
final SAMLPeerEntityContext peerContext = msgCtx.getSubcontext(SAMLPeerEntityContext.class, true);
peerContext.setEntityId(saml2Session.getId());
log.debug("{} Initialized inbound message context for logout of {}", getLogPrefix(), saml2Session.getId());
}
代码示例来源: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} */
@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} */
@Override
protected boolean doPreExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
final MessageContext<Response> outboundMessageCtx = profileRequestContext.getOutboundMessageContext();
if (outboundMessageCtx == null) {
log.debug("{} No outbound message context", getLogPrefix());
ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MSG_CTX);
return false;
} else if (!overwriteExisting && outboundMessageCtx.getMessage() != null) {
log.debug("{} Outbound message context already contains a Response", getLogPrefix());
ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MSG_CTX);
return false;
}
idGenerator = idGeneratorLookupStrategy.apply(profileRequestContext);
if (idGenerator == null) {
log.debug("{} No identifier generation strategy", getLogPrefix());
ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_PROFILE_CTX);
return false;
}
outboundMessageCtx.setMessage(null);
return super.doPreExecute(profileRequestContext);
}
代码示例来源:origin: net.shibboleth.idp/idp-cas-impl
@Override
protected Event doExecute(
final @Nonnull RequestContext springRequestContext,
final @Nonnull ProfileRequestContext profileRequestContext) {
final MessageContext<SAMLObject> msgContext = new MessageContext<>();
try {
msgContext.setMessage(buildSamlResponse(springRequestContext, profileRequestContext));
} catch (final IllegalStateException e) {
return ProtocolError.IllegalState.event(this);
}
final SAMLBindingContext bindingContext = new SAMLBindingContext();
bindingContext.setBindingUri(SAMLConstants.SAML1_SOAP11_BINDING_URI);
msgContext.addSubcontext(bindingContext);
// Ensure message uses SOAP-ENV ns prefix required by old/broken CAS clients
final Envelope envelope = (Envelope) XMLObjectSupport.buildXMLObject(envelopeName);
envelope.setBody((Body) XMLObjectSupport.buildXMLObject(bodyName));
final SOAP11Context soapCtx = new SOAP11Context();
soapCtx.setEnvelope(envelope);
msgContext.addSubcontext(soapCtx);
profileRequestContext.setOutboundMessageContext(msgContext);
return ActionSupport.buildProceedEvent(this);
}
代码示例来源: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: line/armeria
final MessageContext<AuthnRequest> messageContext = new MessageContext<>();
messageContext.setMessage(request);
return new MessageContextAndIdpConfig(messageContext, idp);
}).thenCompose(arg -> {
}).thenApply(arg -> {
final SAMLBindingContext bindingContext =
arg.messageContext.getSubcontext(SAMLBindingContext.class);
final String relayState = bindingContext != null ? bindingContext.getRelayState() : null;
if (endpoint.bindingProtocol() == SamlBindingProtocol.HTTP_REDIRECT) {
return responseWithLocation(toRedirectionUrl(
arg.messageContext.getMessage(),
endpoint.toUriString(), SAML_REQUEST,
signingCredential, sp.signatureAlgorithm(),
} else {
final String value = toSignedBase64(
arg.messageContext.getMessage(),
signingCredential,
sp.signatureAlgorithm());
代码示例来源:origin: line/armeria
final LogoutRequest logoutRequest = messageContext.getMessage();
final SamlIdentityProviderConfig idp = validateAndGetIdPConfig(logoutRequest, endpointUri);
代码示例来源: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: 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());
}
}
内容来源于网络,如有侵权,请联系作者删除!