public virtual GenericXmlSecurityToken RequestTrustedToken(CardSelectionContext ctx, IdentityCard card) { X509Certificate2 cert = new X509Certificate2(card.Certificate); EndpointAddress issuer = new EndpointAddress(card.Issuer, new X509CertificateEndpointIdentity(cert)); return(RequestToken(issuer, ctx)); }
public virtual GenericXmlSecurityToken RequestSelfIssuedToken(CardSelectionContext ctx, IdentityCard card) { Uri issuerUri = card.Issuer ?? new Uri(SelfIdentityIssuerUrl); X509Certificate2 cert = new X509Certificate2(SelfIdentityIssuerCertificate); EndpointAddress issuer = new EndpointAddress(issuerUri, new X509CertificateEndpointIdentity(cert)); return(RequestToken(issuer, ctx)); }
GenericXmlSecurityToken GetToken( XmlElement target, XmlElement issuer, Collection <XmlElement> parameters, Uri policyNoticeLink, int policyNoticeVersion) { Collection <ClaimTypeRequirement> reqs = new Collection <ClaimTypeRequirement> (); Collection <XmlElement> alist = new Collection <XmlElement> (); foreach (XmlElement el in parameters) { if (el.LocalName == "Claims" && el.NamespaceURI == Constants.WstNamespace) { foreach (XmlElement c in el.ChildNodes) { reqs.Add(new ClaimTypeRequirement(c.GetAttribute("Uri"), c.GetAttribute("Optional") == "true")); } } else { alist.Add(el); } } CardSelectionContext ctx = new CardSelectionContext( EndpointAddress.ReadFrom(XmlDictionaryReader.CreateDictionaryReader(new XmlNodeReader(target))), EndpointAddress.ReadFrom(XmlDictionaryReader.CreateDictionaryReader(new XmlNodeReader(issuer))), reqs, alist, policyNoticeLink, policyNoticeVersion); IdentityCard card = SelectCardToSend(ctx); if (card.Issuer != null) { // process WS-Trust RST return(RequestTrustedToken(ctx, card)); } else { return(RequestSelfIssuedToken(ctx, card)); } }
// This is virtual since it might not be required when // GetToken() is overriden. public virtual IdentityCard SelectCardToSend(CardSelectionContext context) { throw new NotSupportedException(); }
// This must be implemented unless other depending methods // are overriden. public virtual GenericXmlSecurityToken RequestToken(EndpointAddress issuer, CardSelectionContext ctx) { return(null); }
// This is virtual since it might not be required when // GetToken() is overriden. public virtual IdentityCard SelectCardToSend (CardSelectionContext context) { throw new NotSupportedException (); }
// This must be implemented unless other depending methods // are overriden. public virtual GenericXmlSecurityToken RequestToken (EndpointAddress issuer, CardSelectionContext ctx) { return null; }
public virtual GenericXmlSecurityToken RequestSelfIssuedToken (CardSelectionContext ctx, IdentityCard card) { Uri issuerUri = card.Issuer ?? new Uri (SelfIdentityIssuerUrl); X509Certificate2 cert = new X509Certificate2 (SelfIdentityIssuerCertificate); EndpointAddress issuer = new EndpointAddress (issuerUri, new X509CertificateEndpointIdentity (cert)); return RequestToken (issuer, ctx); }
public virtual GenericXmlSecurityToken RequestTrustedToken (CardSelectionContext ctx, IdentityCard card) { X509Certificate2 cert = new X509Certificate2 (card.Certificate); EndpointAddress issuer = new EndpointAddress (card.Issuer, new X509CertificateEndpointIdentity (cert)); return RequestToken (issuer, ctx); }
GenericXmlSecurityToken GetToken ( XmlElement target, XmlElement issuer, Collection<XmlElement> parameters, Uri policyNoticeLink, int policyNoticeVersion) { Collection<ClaimTypeRequirement> reqs = new Collection<ClaimTypeRequirement> (); Collection<XmlElement> alist = new Collection<XmlElement> (); foreach (XmlElement el in parameters) { if (el.LocalName == "Claims" && el.NamespaceURI == Constants.WstNamespace) foreach (XmlElement c in el.ChildNodes) reqs.Add (new ClaimTypeRequirement (c.GetAttribute ("Uri"), c.GetAttribute ("Optional") == "true")); else alist.Add (el); } CardSelectionContext ctx = new CardSelectionContext ( EndpointAddress.ReadFrom (XmlDictionaryReader.CreateDictionaryReader (new XmlNodeReader (target))), EndpointAddress.ReadFrom (XmlDictionaryReader.CreateDictionaryReader (new XmlNodeReader (issuer))), reqs, alist, policyNoticeLink, policyNoticeVersion); IdentityCard card = SelectCardToSend (ctx); if (card.Issuer != null) // process WS-Trust RST return RequestTrustedToken (ctx, card); else return RequestSelfIssuedToken (ctx, card); }