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
- BinaryWriter.cs
- TabControl.cs
- BitmapMetadata.cs
- GeneratedView.cs
- PartitionerQueryOperator.cs
- ValidationPropertyAttribute.cs
- Hashtable.cs
- MetadataException.cs
- ProfilePropertySettings.cs
- MailDefinition.cs
- DataRowChangeEvent.cs
- ToolStripGrip.cs
- BamlRecords.cs
- ResolveResponse.cs
- JsonReader.cs
- JsonDataContract.cs
- GroupByQueryOperator.cs
- MailSettingsSection.cs
- Internal.cs
- MimeParameter.cs
- EdmType.cs
- UserControl.cs
- VideoDrawing.cs
- DrawingGroup.cs
- DataGridCellEditEndingEventArgs.cs
- BindingObserver.cs
- QilTernary.cs
- FormView.cs
- SymDocumentType.cs
- CodeValidator.cs
- XDeferredAxisSource.cs
- WithStatement.cs
- CompilerError.cs
- KeyboardEventArgs.cs
- SrgsDocument.cs
- ApplicationFileCodeDomTreeGenerator.cs
- ChineseLunisolarCalendar.cs
- RuntimeConfig.cs
- Timeline.cs
- DocumentPageView.cs
- HttpFileCollectionBase.cs
- Serializer.cs
- PointAnimation.cs
- DataTableReader.cs
- XmlSchemaSimpleTypeUnion.cs
- SafeCertificateStore.cs
- SourceFileInfo.cs
- EndpointIdentityConverter.cs
- WindowsRebar.cs
- ColumnClickEvent.cs
- ProfileParameter.cs
- UndoUnit.cs
- JsonByteArrayDataContract.cs
- PeerNearMe.cs
- NativeMethods.cs
- InternalConfigHost.cs
- DynamicDocumentPaginator.cs
- VoiceChangeEventArgs.cs
- OleDbDataAdapter.cs
- XPathSelectionIterator.cs
- CompareValidator.cs
- EmptyControlCollection.cs
- TraceRecord.cs
- PackagingUtilities.cs
- DynamicControl.cs
- EventHandlersStore.cs
- PixelFormatConverter.cs
- DynamicPropertyHolder.cs
- MSAANativeProvider.cs
- GACIdentityPermission.cs
- ResourcePart.cs
- PagesChangedEventArgs.cs
- TableItemPatternIdentifiers.cs
- TimeSpanStorage.cs
- ping.cs
- StringUtil.cs
- Crc32Helper.cs
- SiteMapNodeItemEventArgs.cs
- PointCollection.cs
- PagedDataSource.cs
- DefaultValueAttribute.cs
- DeviceFilterDictionary.cs
- XmlDeclaration.cs
- DataRowChangeEvent.cs
- IdnElement.cs
- ISAPIWorkerRequest.cs
- OneOfTypeConst.cs
- DispatcherExceptionEventArgs.cs
- MimeParameters.cs
- ListBindingHelper.cs
- PassportAuthenticationModule.cs
- Parser.cs
- DataObjectCopyingEventArgs.cs
- RubberbandSelector.cs
- MenuItemCollection.cs
- TablePatternIdentifiers.cs
- BinaryParser.cs
- ControlCachePolicy.cs
- PrinterUnitConvert.cs
- WebEventTraceProvider.cs