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, TokenType));

                case SecurityTokenReferenceStyle.External:
                    string encoding    = issuedTokenXml.GetAttribute(EncodingTypeAttributeString, null);
                    string encodedData = issuedTokenXml.InnerText;

                    byte[] binaryData;
                    if (encoding == null || encoding == EncodingTypeValueBase64Binary)
                    {
                        binaryData = Convert.FromBase64String(encodedData);
                    }
                    else if (encoding == EncodingTypeValueHexBinary)
                    {
                        binaryData = HexBinary.Parse(encodedData).Value;
                    }
                    else
                    {
                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.UnknownEncodingInBinarySecurityToken));
                    }

                    return(CreateKeyIdentifierClauseFromBinaryCore(binaryData));

                default:
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(tokenReferenceStyle)));
                }
            }
Esempio n. 2
0
            public override SecurityToken ReadTokenCore(XmlDictionaryReader reader, SecurityTokenResolver tokenResolver)
            {
                string wsuId        = reader.GetAttribute(XD.UtilityDictionary.IdAttribute, XD.UtilityDictionary.Namespace);
                string valueTypeUri = reader.GetAttribute(s_valueTypeAttribute, null);
                string encoding     = reader.GetAttribute(s_encodingTypeAttribute, null);

                byte[] binaryData;
                if (encoding == null || encoding == EncodingTypeValueBase64Binary)
                {
                    binaryData = reader.ReadElementContentAsBase64();
                }
                else if (encoding == EncodingTypeValueHexBinary)
                {
                    binaryData = HexBinary.Parse(reader.ReadElementContentAsString()).Value;
                }
                else
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.UnknownEncodingInBinarySecurityToken));
                }

                return(ReadBinaryCore(wsuId, valueTypeUri, binaryData));
            }