Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Tokens / SamlSubjectStatement.cs / 1305376 / SamlSubjectStatement.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IdentityModel.Tokens { using System.Collections.Generic; using System.Collections.ObjectModel; using System.IdentityModel.Claims; using System.IdentityModel.Policy; using System.IdentityModel.Selectors; using System.Security.Principal; public abstract class SamlSubjectStatement : SamlStatement { SamlSubject subject; IAuthorizationPolicy policy; bool isReadOnly = false; protected SamlSubjectStatement() { } protected SamlSubjectStatement(SamlSubject samlSubject) { if (samlSubject == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSubject")); this.subject = samlSubject; } public SamlSubject SamlSubject { get {return this.subject; } set { if (isReadOnly) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ObjectIsReadOnly))); if (value == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); this.subject = value; } } public override bool IsReadOnly { get { return this.isReadOnly; } } public override void MakeReadOnly() { if (!this.isReadOnly) { subject.MakeReadOnly(); this.isReadOnly = true; } } public override IAuthorizationPolicy CreatePolicy(ClaimSet issuer, SamlSecurityTokenAuthenticator samlAuthenticator) { if (issuer == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("issuer"); // SupportingTokenAuthenticator collection can be null when the Subject does not // contain a key. if (this.policy == null) { ListclaimSets = new List (); ClaimSet subjectKeyClaimset = this.subject.ExtractSubjectKeyClaimSet(samlAuthenticator); if (subjectKeyClaimset != null) claimSets.Add(subjectKeyClaimset); List claims = new List (); ReadOnlyCollection subjectClaims = this.subject.ExtractClaims(); for (int i = 0; i < subjectClaims.Count; ++i) { claims.Add(subjectClaims[i]); } AddClaimsToList(claims); claimSets.Add(new DefaultClaimSet(issuer, claims)); this.policy = new UnconditionalPolicy(this.subject.Identity, claimSets.AsReadOnly(), SecurityUtils.MaxUtcDateTime); } return this.policy; } protected void SetSubject(SamlSubject samlSubject) { if (samlSubject == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSubject")); this.subject = samlSubject; } protected abstract void AddClaimsToList(IList claims); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.IdentityModel.Tokens { using System.Collections.Generic; using System.Collections.ObjectModel; using System.IdentityModel.Claims; using System.IdentityModel.Policy; using System.IdentityModel.Selectors; using System.Security.Principal; public abstract class SamlSubjectStatement : SamlStatement { SamlSubject subject; IAuthorizationPolicy policy; bool isReadOnly = false; protected SamlSubjectStatement() { } protected SamlSubjectStatement(SamlSubject samlSubject) { if (samlSubject == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSubject")); this.subject = samlSubject; } public SamlSubject SamlSubject { get {return this.subject; } set { if (isReadOnly) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ObjectIsReadOnly))); if (value == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); this.subject = value; } } public override bool IsReadOnly { get { return this.isReadOnly; } } public override void MakeReadOnly() { if (!this.isReadOnly) { subject.MakeReadOnly(); this.isReadOnly = true; } } public override IAuthorizationPolicy CreatePolicy(ClaimSet issuer, SamlSecurityTokenAuthenticator samlAuthenticator) { if (issuer == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("issuer"); // SupportingTokenAuthenticator collection can be null when the Subject does not // contain a key. if (this.policy == null) { List claimSets = new List (); ClaimSet subjectKeyClaimset = this.subject.ExtractSubjectKeyClaimSet(samlAuthenticator); if (subjectKeyClaimset != null) claimSets.Add(subjectKeyClaimset); List claims = new List (); ReadOnlyCollection subjectClaims = this.subject.ExtractClaims(); for (int i = 0; i < subjectClaims.Count; ++i) { claims.Add(subjectClaims[i]); } AddClaimsToList(claims); claimSets.Add(new DefaultClaimSet(issuer, claims)); this.policy = new UnconditionalPolicy(this.subject.Identity, claimSets.AsReadOnly(), SecurityUtils.MaxUtcDateTime); } return this.policy; } protected void SetSubject(SamlSubject samlSubject) { if (samlSubject == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("samlSubject")); this.subject = samlSubject; } protected abstract void AddClaimsToList(IList claims); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SemaphoreSlim.cs
- CheckedListBox.cs
- RawStylusInput.cs
- EncoderNLS.cs
- SessionStateUtil.cs
- KeySplineConverter.cs
- UIElement3DAutomationPeer.cs
- CodeMethodReturnStatement.cs
- DataGridViewCellStateChangedEventArgs.cs
- ScriptReferenceEventArgs.cs
- TemplateField.cs
- SwitchElementsCollection.cs
- CodeSubDirectoriesCollection.cs
- TrackBar.cs
- StorageScalarPropertyMapping.cs
- AddingNewEventArgs.cs
- StrongBox.cs
- CompareInfo.cs
- MimeAnyImporter.cs
- WindowsListViewScroll.cs
- EntityDataSourceState.cs
- WebColorConverter.cs
- TaskFormBase.cs
- SessionEndingCancelEventArgs.cs
- TerminatingOperationBehavior.cs
- OdbcConnectionString.cs
- PersonalizationStateInfo.cs
- PackageRelationshipSelector.cs
- CodeSubDirectory.cs
- CqlParser.cs
- CTreeGenerator.cs
- Double.cs
- CodeAttributeArgument.cs
- SpecularMaterial.cs
- SystemBrushes.cs
- Visitors.cs
- _WebProxyDataBuilder.cs
- OpenTypeLayoutCache.cs
- TabControl.cs
- ClientProtocol.cs
- GotoExpression.cs
- DoubleAnimationUsingPath.cs
- FormViewPagerRow.cs
- ListItemConverter.cs
- SiteOfOriginPart.cs
- XmlMembersMapping.cs
- Rect3DValueSerializer.cs
- DataBindingExpressionBuilder.cs
- FilterableAttribute.cs
- Blend.cs
- FrugalMap.cs
- Operand.cs
- Geometry3D.cs
- ConfigXmlSignificantWhitespace.cs
- AutomationProperty.cs
- ListContractAdapter.cs
- EnumValAlphaComparer.cs
- ListBoxItemWrapperAutomationPeer.cs
- TreeViewAutomationPeer.cs
- TextTreeInsertElementUndoUnit.cs
- HtmlTableCellCollection.cs
- OrderedDictionary.cs
- ConnectionsZone.cs
- EncryptedReference.cs
- GuidConverter.cs
- invalidudtexception.cs
- StsCommunicationException.cs
- FacetDescriptionElement.cs
- FragmentQuery.cs
- Cursors.cs
- EntityStoreSchemaFilterEntry.cs
- ExtensionSimplifierMarkupObject.cs
- MsmqOutputChannel.cs
- WebPartZone.cs
- XmlEncodedRawTextWriter.cs
- _SingleItemRequestCache.cs
- Annotation.cs
- QilSortKey.cs
- TagNameToTypeMapper.cs
- InvokeMethodDesigner.xaml.cs
- SqlUserDefinedAggregateAttribute.cs
- CatalogPartChrome.cs
- Configuration.cs
- ValuePattern.cs
- KeyFrames.cs
- DoubleAnimation.cs
- FontSourceCollection.cs
- ItemCollection.cs
- XmlSchemaRedefine.cs
- WebOperationContext.cs
- NamedObjectList.cs
- WebPartDescription.cs
- Ref.cs
- Rotation3DAnimation.cs
- EntityDataSourceQueryBuilder.cs
- KeyEvent.cs
- PointCollection.cs
- ContextTokenTypeConverter.cs
- CharacterHit.cs
- Site.cs