예제 #1
0
        private Saml2Response(XmlDocument xml)
        {
            xmlDocument = xml;

            id = new Saml2Id(xml.DocumentElement.Attributes["ID"].Value);

            var parsedInResponseTo = xml.DocumentElement.Attributes["InResponseTo"].GetValueIfNotNull();
            if (parsedInResponseTo != null)
            {
                inResponseTo = new Saml2Id(parsedInResponseTo);
            }

            issueInstant = DateTime.Parse(xml.DocumentElement.Attributes["IssueInstant"].Value,
                CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);

            var statusString = xml.DocumentElement["Status", Saml2Namespaces.Saml2PName]
                ["StatusCode", Saml2Namespaces.Saml2PName].Attributes["Value"].Value;

            status = StatusCodeHelper.FromString(statusString);

            issuer = xmlDocument.DocumentElement["Issuer", Saml2Namespaces.Saml2Name].GetTrimmedTextIfNotNull();

            var destinationUriString = xmlDocument.DocumentElement.Attributes["Destination"].GetValueIfNotNull();

            if (destinationUriString != null)
            {
                destinationUri = new Uri(destinationUriString);
            }
        }
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="status">Status of the response</param>
 protected Saml2StatusResponseType(Saml2StatusCode status)
 {
     Status       = status;
     MessageName  = "SAMLResponse";
     Id           = new Saml2Id();
     IssueInstant = DateTime.UtcNow;
 }
예제 #3
0
 /// <summary>
 /// Create a response with the supplied data.
 /// </summary>
 /// <param name="issuer">Issuer of the response.</param>
 /// <param name="issuerCertificate">The certificate to use when signing
 /// this response in XML form.</param>
 /// <param name="destinationUri">The destination Uri for the message</param>
 /// <param name="claimsIdentities">Claims identities to be included in the 
 /// response. Each identity is translated into a separate assertion.</param>
 public Saml2Response(string issuer, X509Certificate2 issuerCertificate,
     Uri destinationUri, params ClaimsIdentity[] claimsIdentities)
 {
     this.issuer = issuer;
     this.claimsIdentities = claimsIdentities;
     this.issuerCertificate = issuerCertificate;
     this.destinationUri = destinationUri;
     id = new Saml2Id("id" + Guid.NewGuid().ToString("N"));
     status = Saml2StatusCode.Success;
 }
 /// <summary>
 /// Ctor, bundling the Saml2 status codes and message into the exception message.
 /// </summary>
 /// <param name="message">Exception message.</param>
 /// <param name="statusCode">Status of the SAML2Response</param>
 /// <param name="statusMessage">Status message of SAML2Response</param>
 /// <param name="secondLevelStatus">Second level status of SAML2Response</param>
 public UnsuccessfulSamlOperationException(string message, Saml2StatusCode statusCode, string statusMessage, string secondLevelStatus) :
     base(message + "\n" +
          "  Saml2 Status Code: " + statusCode + "\n" +
          "  Saml2 Status Message: " + statusMessage + "\n" +
          "  Saml2 Second Level Status: " + secondLevelStatus)
 {
     this.Status            = statusCode;
     this.StatusMessage     = statusMessage;
     this.SecondLevelStatus = secondLevelStatus;
 }
예제 #5
0
 /// <summary>
 /// Create a response with the supplied data.
 /// </summary>
 /// <param name="issuer">Issuer of the response.</param>
 /// <param name="issuerCertificate">The certificate to use when signing
 /// this response in XML form.</param>
 /// <param name="destinationUrl">The destination Uri for the message</param>
 /// <param name="inResponseTo">In response to id</param>
 /// <param name="claimsIdentities">Claims identities to be included in the 
 /// response. Each identity is translated into a separate assertion.</param>
 public Saml2Response(EntityId issuer, X509Certificate2 issuerCertificate,
     Uri destinationUrl, string inResponseTo, params ClaimsIdentity[] claimsIdentities)
 {
     this.issuer = issuer;
     this.claimsIdentities = claimsIdentities;
     this.issuerCertificate = issuerCertificate;
     this.destinationUrl = destinationUrl;
     if (inResponseTo != null)
     {
         this.inResponseTo = new Saml2Id(inResponseTo);
     }
     id = new Saml2Id("id" + Guid.NewGuid().ToString("N"));
     status = Saml2StatusCode.Success;
 }
예제 #6
0
        private Saml2Response(XmlDocument xml)
        {
            xmlDocument = xml;

            id = xml.DocumentElement.Attributes["ID"].Value;

            issueInstant = DateTime.Parse(xml.DocumentElement.Attributes["IssueInstant"].Value,
                CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);

            var statusString = xml.DocumentElement["Status", Saml2Namespaces.Saml2PName]
                ["StatusCode", Saml2Namespaces.Saml2PName].Attributes["Value"].Value;

            status = StatusCodeHelper.FromString(statusString);
        }
예제 #7
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="status">Status of the response</param>
 protected Saml2StatusResponseType(Saml2StatusCode status)
 {
     Status = status;
 }
예제 #8
0
 public static string FromCode(Saml2StatusCode statusCode)
 {
     return(fromCode[statusCode]);
 }
예제 #9
0
 public static string FromCode(Saml2StatusCode statusCode)
 {
     return fromCode[statusCode];
 }
예제 #10
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="status">Status of the response.</param>
 public Saml2LogoutResponse(Saml2StatusCode status)
     : base(status)
 {
 }
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="status">Status of the response</param>
 protected Saml2StatusResponseType(Saml2StatusCode status)
 {
     Status = status;
 }
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="status">Status of the response.</param>
 public Saml2LogoutResponse(Saml2StatusCode status)
     : base(status)
 { }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message">Exception message.</param>
 /// <param name="statusCode">Status of the SAML2Response</param>
 /// <param name="statusMessage">Status message of SAML2Response</param>
 /// <param name="secondLevelStatus">Second level status of SAML2Response</param>
 public UnsuccessfulSamlOperationException(string message, Saml2StatusCode statusCode, string statusMessage, string secondLevelStatus) : base(message)
 {
     this.Status = statusCode;
     this.StatusMessage = statusMessage;
     this.SecondLevelStatus = secondLevelStatus;
 }