SignInResponseMessage Class
Represents a WS-Federation Sign-In Response message.
Namespace: Microsoft.IdentityModel.Protocols.WSFederation
Assembly: Microsoft.IdentityModel (in Microsoft.IdentityModel.dll)
The following code example from a sample web page accepts an HTTP request and creates a Sign-In Request message and a Sign-In Response message.
namespace SimplePassiveSTS
{
public partial class _Default : System.Web.UI.Page
{
/// <summary>
/// Returns whether the user is authenticated or not.
/// </summary>
bool IsAuthenticatedUser
{
get
{
return ( ( Page.User != null ) && ( Page.User.Identity != null ) && ( Page.User.Identity.IsAuthenticated ) );
}
}
/// <summary>
/// Helper function that processes the incoming request message
/// and creates a response message
/// </summary>
private SignInResponseMessage ProcessSignInRequest(SignInRequestMessage requestMessage )
{
if ( requestMessage == null )
{
throw new ArgumentNullException( "requestMessage" );
}
// Ensure that the requestMessage has the required ‘wtrealm’
// parameter
if ( String.IsNullOrEmpty( requestMessage.Realm ) )
{
throw new InvalidOperationException(
"Incoming Passive Request message didn't contain the wtrealm parameter." );
}
// Create a SecurityTokenServiceConfiguration instance
SecurityTokenServiceConfiguration stsconfig = new SecurityTokenServiceConfiguration( "SimplePassiveSTS" );
// Create the STS.
SecurityTokenService sts = new MySecurityTokenService(stsconfig);
// Create the WS-Federation serializer to process the request and
// create the response.
// This creates the default WSFederationSerializer that handles
// the WS-Trust Feb 2005 specification.
WSFederationSerializer federationSerializer = new WSFederationSerializer();
// Create RST from the request
RequestSecurityToken request = federationSerializer.CreateRequest (requestMessage, new WSTrustSerializationContext() );
// Get RSTR from the STS.
RequestSecurityTokenResponse response = sts.Issue(ClaimsPrincipal.Current, request );
// Create WS-Federation Response message from the RSTR
return new SignInResponseMessage( new Uri( response.ReplyTo ),
federationSerializer.GetResponseAsString(response, new WSTrustSerializationContext() ) );
}
/// <summary>
/// We perform WS-Federation passive protocol logic in this method
///and call out to the appropriate request handlers.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_PreRender( object sender, EventArgs e )
{
if ( IsAuthenticatedUser )
{
// Use WSFederationMessage.CreateFromUri to parse the request and create a WSFederationMessage.
WSFederationMessage federationMessage = WSFederationMessage.CreateFromUri( Request.Url );
if ( federationMessage.Action == WSFederationConstants.Actions.SignIn )
{
// Process the sign in request.
SignInResponseMessage responseMessage = ProcessSignInRequest(
federationMessage as SignInRequestMessage );
// Always Echo back the Context (wctx) which came on the // request.
responseMessage.Context = federationMessage.Context;
// Write the response message.
responseMessage.Write( Page.Response.Output );
Response.Flush();
Response.End();
}
else if ( federationMessage.Action == WSFederationConstants.Actions.SignOut ||
federationMessage.Action == WSFederationConstants.Actions.SignOutCleanup )
{
// Perform the clean-up operation here
}
else
{
throw new InvalidOperationException( String.Format(
CultureInfo.InvariantCulture, "Unsupported Action: {0}", federationMessage.Action ) );
}
}
}
}
}
This message is created when the action parameter (wa) of the received message is “wsignin1.0” and the message contains a wresult or a wresultptr parameter.
When converting a RequestSecurityTokenResponse object to a SignInResponseMessage object, the context attribute on RequestSecurityTokenResponse message is not transferred over, and must be explicitly set.
For more information about the message that this class represents, see the WS-Federation specification. You can find links to this specification and other WS-* specifications relevant to WIF in the Windows Identity Foundation SDK topic.
Microsoft.IdentityModel.Protocols.WSFederation.WSFederationMessage
Microsoft.IdentityModel.Protocols.WSFederation.SignInResponseMessage
Target Platforms
Windows 7, Windows Server 2008 R2, Windows Vista SP2, Windows Server 2008 SP2, Windows Server 2003 SP2 (32-bit or 64-bit)
Copyright © 2008 by Microsoft Corporation. All rights reserved.