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); }
// 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); }
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; } } } }