/// <summary> /// Requests an SWT Token using an input SAML token. /// </summary> /// <param name="token">The input SAML token.</param> /// <param name="scope">The requested scope.</param> /// <returns>The requested SWT token</returns> public SimpleWebToken Issue(SamlSecurityToken token, Uri scope) { var handler = new Saml11SecurityTokenHandler(); var sb = new StringBuilder(128); handler.WriteToken(new XmlTextWriter(new StringWriter(sb)), token); return IssueAssertion(sb.ToString(), "SAML", scope); }
/// <summary> /// Requests an SWT Token using an input SAML token. /// </summary> /// <param name="token">The input SAML token.</param> /// <param name="scope">The requested scope.</param> /// <returns>The requested SWT token</returns> public SimpleWebToken Issue(SamlSecurityToken token, Uri scope) { var handler = new Saml11SecurityTokenHandler(); var sb = new StringBuilder(128); handler.WriteToken(XmlWriter.Create(new StringWriter(sb)), token); return(IssueAssertion(sb.ToString(), "SAML", scope)); }
/// <summary> /// Issues a token for the specified realm. /// </summary> /// <param name="realm">The realm name.</param> /// <returns>A SecurityToken as XElement</returns> public XElement Issue(string realm) { if (String.IsNullOrEmpty(realm)) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.BadRequest; return(null); } if (ServiceSecurityContext.Current == null) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError; return(null); } var username = ServiceSecurityContext.Current.PrimaryIdentity.Name; var handler = new Saml11SecurityTokenHandler(); var descriptor = new SecurityTokenDescriptor { AppliesToAddress = realm, Lifetime = GetLifetime(realm, username), TokenIssuerName = GetIssuerName().AbsoluteUri, EncryptingCredentials = GetEncryptingCredentials(realm), SigningCredentials = GetSigningCredentials(), Subject = GetOutputClaimsIdentity(realm, username) }; var token = handler.CreateToken(descriptor); StringBuilder sb = new StringBuilder(); var writer = XmlWriter.Create(sb); handler.WriteToken(writer, token); WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; return(XElement.Parse(sb.ToString())); }
/// <summary> /// Issues a token for the specified realm. /// </summary> /// <param name="realm">The realm name.</param> /// <returns>A SecurityToken as XElement</returns> public XElement Issue(string realm) { if (String.IsNullOrEmpty(realm)) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.BadRequest; return null; } if (ServiceSecurityContext.Current == null) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError; return null; } var username = ServiceSecurityContext.Current.PrimaryIdentity.Name; var handler = new Saml11SecurityTokenHandler(); var descriptor = new SecurityTokenDescriptor { AppliesToAddress = realm, Lifetime = GetLifetime(realm, username), TokenIssuerName = GetIssuerName().AbsoluteUri, EncryptingCredentials = GetEncryptingCredentials(realm), SigningCredentials = GetSigningCredentials(), Subject = GetOutputClaimsIdentity(realm, username) }; var token = handler.CreateToken(descriptor); StringBuilder sb = new StringBuilder(); var writer = XmlWriter.Create(sb); handler.WriteToken(writer, token); WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; return XElement.Parse(sb.ToString()); }