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
- CodeSubDirectory.cs
- WCFModelStrings.Designer.cs
- MenuItemBindingCollection.cs
- DeadCharTextComposition.cs
- ErrorStyle.cs
- Model3DCollection.cs
- DataControlExtensions.cs
- odbcmetadatacolumnnames.cs
- PartialCachingAttribute.cs
- DetailsViewRowCollection.cs
- NonParentingControl.cs
- FixedSOMGroup.cs
- QilName.cs
- LineProperties.cs
- XPathBinder.cs
- TdsParserSafeHandles.cs
- InputMethodStateChangeEventArgs.cs
- QueryContinueDragEventArgs.cs
- SmtpAuthenticationManager.cs
- DefaultValueTypeConverter.cs
- FixedPageProcessor.cs
- ActivityTrace.cs
- DbDataRecord.cs
- DrawingAttributeSerializer.cs
- SyndicationSerializer.cs
- RecipientInfo.cs
- ToolStripManager.cs
- CipherData.cs
- ToolStripCollectionEditor.cs
- SystemIPInterfaceStatistics.cs
- DataSourceHelper.cs
- infer.cs
- FontFamily.cs
- HashRepartitionEnumerator.cs
- FacetValueContainer.cs
- ContractMapping.cs
- ThemeInfoAttribute.cs
- XmlDataSourceView.cs
- Frame.cs
- XmlDataCollection.cs
- DbConnectionPoolGroup.cs
- EditingMode.cs
- HttpWrapper.cs
- PropertySourceInfo.cs
- FontFamilyValueSerializer.cs
- Viewport2DVisual3D.cs
- ZipIOExtraFieldElement.cs
- RecordBuilder.cs
- IndexedGlyphRun.cs
- XPathBinder.cs
- tibetanshape.cs
- ObjectViewQueryResultData.cs
- WebPartChrome.cs
- FocusWithinProperty.cs
- PathFigure.cs
- SqlMetaData.cs
- RemotingAttributes.cs
- TraceEventCache.cs
- FlowDocumentReader.cs
- ResourceReferenceExpression.cs
- XmlFormatReaderGenerator.cs
- ExpressionPrefixAttribute.cs
- CroppedBitmap.cs
- SupportingTokenAuthenticatorSpecification.cs
- CodeConditionStatement.cs
- TimeoutHelper.cs
- TextEditorParagraphs.cs
- RawAppCommandInputReport.cs
- DisposableCollectionWrapper.cs
- SetIterators.cs
- XdrBuilder.cs
- BinaryMessageEncoder.cs
- FormViewCommandEventArgs.cs
- DrawingCollection.cs
- SemaphoreFullException.cs
- Buffer.cs
- BamlBinaryReader.cs
- DEREncoding.cs
- EmptyControlCollection.cs
- EntityDataSourceDesignerHelper.cs
- SoapElementAttribute.cs
- CounterCreationDataCollection.cs
- ObjectSet.cs
- WebPermission.cs
- WindowsPrincipal.cs
- XhtmlBasicValidationSummaryAdapter.cs
- XmlAttributeAttribute.cs
- Error.cs
- XmlAnyElementAttribute.cs
- ObjectQuery.cs
- DataRowChangeEvent.cs
- UIPermission.cs
- DataSourceListEditor.cs
- ParameterBuilder.cs
- MetaModel.cs
- OleDbStruct.cs
- UpdatePanelTrigger.cs
- SamlNameIdentifierClaimResource.cs
- ProfilePropertyNameValidator.cs
- DBConnection.cs