Esempio n. 1
0
            public override SecurityKeyIdentifierClause CreateKeyIdentifierClauseFromTokenXmlCore(XmlElement issuedTokenXml,
                                                                                                  SecurityTokenReferenceStyle tokenReferenceStyle)
            {
                TokenReferenceStyleHelper.Validate(tokenReferenceStyle);

                switch (tokenReferenceStyle)
                {
                case SecurityTokenReferenceStyle.Internal:
                    return(CreateDirectReference(issuedTokenXml, UtilityStrings.IdAttribute, UtilityStrings.Namespace, typeof(SecurityContextSecurityToken)));

                case SecurityTokenReferenceStyle.External:
                    UniqueId contextId  = null;
                    UniqueId generation = null;
                    foreach (XmlNode node in issuedTokenXml.ChildNodes)
                    {
                        XmlElement element = node as XmlElement;
                        if (element != null)
                        {
                            if (element.LocalName == Parent.SerializerDictionary.Identifier.Value && element.NamespaceURI == Parent.SerializerDictionary.Namespace.Value)
                            {
                                contextId = XmlHelper.ReadTextElementAsUniqueId(element);
                            }
                            else if (CanReadGeneration(element))
                            {
                                generation = ReadGeneration(element);
                            }
                        }
                    }
                    return(new SecurityContextKeyIdentifierClause(contextId, generation));

                default:
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("tokenReferenceStyle"));
                }
            }
Esempio n. 2
0
            public override SecurityKeyIdentifierClause CreateKeyIdentifierClauseFromTokenXmlCore(XmlElement issuedTokenXml, SecurityTokenReferenceStyle tokenReferenceStyle)
            {
                TokenReferenceStyleHelper.Validate(tokenReferenceStyle);
                if (tokenReferenceStyle == SecurityTokenReferenceStyle.Internal)
                {
                    return(WSSecurityTokenSerializer.TokenEntry.CreateDirectReference(issuedTokenXml, "Id", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", typeof(SecurityContextSecurityToken)));
                }
                if (tokenReferenceStyle != SecurityTokenReferenceStyle.External)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError((Exception) new ArgumentOutOfRangeException("tokenReferenceStyle"));
                }
                UniqueId contextId  = (UniqueId)null;
                UniqueId generation = (UniqueId)null;

                foreach (XmlNode childNode in issuedTokenXml.ChildNodes)
                {
                    XmlElement element = childNode as XmlElement;
                    if (element != null)
                    {
                        if (element.LocalName == this.parent.SerializerDictionary.Identifier.Value && element.NamespaceURI == this.parent.SerializerDictionary.Namespace.Value)
                        {
                            contextId = XmlHelper.ReadTextElementAsUniqueId(element);
                        }
                        else if (this.CanReadGeneration(element))
                        {
                            generation = this.ReadGeneration(element);
                        }
                    }
                }
                return((SecurityKeyIdentifierClause) new SecurityContextKeyIdentifierClause(contextId, generation));
            }
Esempio n. 3
0
 protected override UniqueId ReadGeneration(XmlElement element)
 {
     return(XmlHelper.ReadTextElementAsUniqueId(element));
 }