private static IssuedSecurityTokenParameters TryGetNextStsIssuedTokenParameters(SecurityBindingElement securityBindingEle)
        {
            if (securityBindingEle == null)
            {
                return(null);
            }
            ThrowOnMultipleAssignment <IssuedSecurityTokenParameters> issuedSecurityTokenParameters = new ThrowOnMultipleAssignment <IssuedSecurityTokenParameters>(System.ServiceModel.SR.GetString("TooManyIssuedSecurityTokenParameters"));

            FindInfoCardIssuerBinding(securityBindingEle, issuedSecurityTokenParameters);
            return(issuedSecurityTokenParameters.Value);
        }
Esempio n. 2
0
        // Summary:
        //  Searches a security binding element for a single IssuedSecurityTokenParameters.  This method will throw an
        //  argument exception if more than one is found.
        //
        // Parameters:
        //  securityBindingEle   -  The SecurityBindingElement to search.
        //
        // Return Value:
        //  Returns an IssuedSecurityTokenParameters if one is found, otherwise null.
        //
        static IssuedSecurityTokenParameters TryGetNextStsIssuedTokenParameters(SecurityBindingElement securityBindingEle)
        {
            if (securityBindingEle == null)
            {
                return(null);
            }

            //
            // This object can have a value assigned to it exactly once.  After one assignment of a non-null value
            // any other non-null assignment will cause the object to throw an argument excaption.
            //
            ThrowOnMultipleAssignment <IssuedSecurityTokenParameters> issuedTokenParameters =
                new ThrowOnMultipleAssignment <IssuedSecurityTokenParameters>(SR.GetString(SR.TooManyIssuedSecurityTokenParameters));

            FindInfoCardIssuerBinding(securityBindingEle, issuedTokenParameters);

            return(issuedTokenParameters.Value);
        }
Esempio n. 3
0
        static void FindInfoCardIssuerBinding(SecurityBindingElement secBindingElement, ThrowOnMultipleAssignment <IssuedSecurityTokenParameters> issuedSecurityTokenParameters)
        {
            if (secBindingElement == null)
            {
                return;
            }

            //
            // Go down the list of possible places for an IssuedSecurityTokenParameters, and hope we don't
            // miss anything.
            //
            SecurityTokenParametersEnumerable tokenParamEnumerator = new SecurityTokenParametersEnumerable(secBindingElement);

            foreach (SecurityTokenParameters param in tokenParamEnumerator)
            {
                IssuedSecurityTokenParameters issuedTokenParam = param as IssuedSecurityTokenParameters;
                if (issuedTokenParam != null &&
                    ((issuedTokenParam.IssuerBinding == null ||
                      issuedTokenParam.IssuerAddress == null ||
                      issuedTokenParam.IssuerAddress.IsAnonymous ||
                      SelfIssuerUri.Equals(issuedTokenParam.IssuerAddress)) ||
                     (IsReferralToManagedIssuer(issuedTokenParam.IssuerBinding))))
                {
                    if (issuedSecurityTokenParameters != null)
                    {
                        issuedSecurityTokenParameters.Value = issuedTokenParam;
                    }
                }
                else if (param is SecureConversationSecurityTokenParameters)
                {
                    IssuedSecurityTokenParameters istp = TryGetNextStsIssuedTokenParameters(((SecureConversationSecurityTokenParameters)param).BootstrapSecurityBindingElement);
                    if ((istp != null) && (issuedSecurityTokenParameters != null))
                    {
                        issuedSecurityTokenParameters.Value = istp;
                    }
                }
                else if ((issuedTokenParam != null) && (issuedTokenParam.IssuerBinding != null))
                {
                    BindingElementCollection      bindingElements             = issuedTokenParam.IssuerBinding.CreateBindingElements();
                    SecurityBindingElement        innerSecurityBindingElement = bindingElements.Find <SecurityBindingElement>();
                    IssuedSecurityTokenParameters istp = TryGetNextStsIssuedTokenParameters(innerSecurityBindingElement);
                    if ((istp != null) && (issuedSecurityTokenParameters != null))
                    {
                        issuedSecurityTokenParameters.Value = issuedTokenParam;
                    }
                }
            }
        }
 private static void FindInfoCardIssuerBinding(SecurityBindingElement secBindingElement, ThrowOnMultipleAssignment <IssuedSecurityTokenParameters> issuedSecurityTokenParameters)
 {
     if (secBindingElement != null)
     {
         SecurityTokenParametersEnumerable enumerable = new SecurityTokenParametersEnumerable(secBindingElement);
         foreach (SecurityTokenParameters parameters in enumerable)
         {
             IssuedSecurityTokenParameters parameters2 = parameters as IssuedSecurityTokenParameters;
             if ((parameters2 != null) && (((parameters2.IssuerBinding == null) || (parameters2.IssuerAddress == null)) || ((parameters2.IssuerAddress.IsAnonymous || SelfIssuerUri.Equals(parameters2.IssuerAddress)) || IsReferralToManagedIssuer(parameters2.IssuerBinding))))
             {
                 if (issuedSecurityTokenParameters != null)
                 {
                     issuedSecurityTokenParameters.Value = parameters2;
                 }
             }
             else if (parameters is SecureConversationSecurityTokenParameters)
             {
                 IssuedSecurityTokenParameters parameters3 = TryGetNextStsIssuedTokenParameters(((SecureConversationSecurityTokenParameters)parameters).BootstrapSecurityBindingElement);
                 if ((parameters3 != null) && (issuedSecurityTokenParameters != null))
                 {
                     issuedSecurityTokenParameters.Value = parameters3;
                 }
             }
             else if (((parameters2 != null) && (parameters2.IssuerBinding != null)) && ((TryGetNextStsIssuedTokenParameters(parameters2.IssuerBinding.CreateBindingElements().Find <SecurityBindingElement>()) != null) && (issuedSecurityTokenParameters != null)))
             {
                 issuedSecurityTokenParameters.Value = parameters2;
             }
         }
     }
 }