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
- validation.cs
- BamlTreeUpdater.cs
- DataControlCommands.cs
- SessionStateSection.cs
- FormsAuthenticationEventArgs.cs
- SqlUnionizer.cs
- ResolveDuplexAsyncResult.cs
- RoleManagerModule.cs
- DataAdapter.cs
- MessageVersionConverter.cs
- Component.cs
- TypeUsage.cs
- ProtocolViolationException.cs
- OdbcParameterCollection.cs
- XmlFormatExtensionAttribute.cs
- ReadOnlyDataSourceView.cs
- ScrollableControl.cs
- DataGridLinkButton.cs
- TextMarkerSource.cs
- MenuCommandService.cs
- GPPOINTF.cs
- SrgsText.cs
- SByteConverter.cs
- WebPartConnectionsDisconnectVerb.cs
- ReversePositionQuery.cs
- TabControl.cs
- ImageField.cs
- AxisAngleRotation3D.cs
- DesignerEditorPartChrome.cs
- ContainerUtilities.cs
- TextElementEditingBehaviorAttribute.cs
- Decorator.cs
- GridViewCancelEditEventArgs.cs
- BitmapEffectInput.cs
- TextElementEnumerator.cs
- RegexParser.cs
- MembershipValidatePasswordEventArgs.cs
- SynchronizationHandlesCodeDomSerializer.cs
- OLEDB_Enum.cs
- Size3D.cs
- DataGridHelper.cs
- ViewCellRelation.cs
- WebPartVerb.cs
- ELinqQueryState.cs
- keycontainerpermission.cs
- XmlSerializationWriter.cs
- log.cs
- UInt32.cs
- CompiledQueryCacheEntry.cs
- StoragePropertyMapping.cs
- UInt64Converter.cs
- DataServiceProviderMethods.cs
- FrameworkTemplate.cs
- SignedPkcs7.cs
- RepeatInfo.cs
- SmtpCommands.cs
- GeometryValueSerializer.cs
- MSHTMLHost.cs
- ServiceDebugElement.cs
- ScriptResourceInfo.cs
- DocumentOrderQuery.cs
- FixedSOMTable.cs
- PersistenceException.cs
- ObjectConverter.cs
- LexicalChunk.cs
- DataRowComparer.cs
- PowerStatus.cs
- BindingOperations.cs
- SymmetricAlgorithm.cs
- CanonicalFormWriter.cs
- Header.cs
- InternalConfigEventArgs.cs
- sqlmetadatafactory.cs
- SplitterPanel.cs
- _NTAuthentication.cs
- panel.cs
- ColumnHeaderCollectionEditor.cs
- PaperSize.cs
- CryptoStream.cs
- SingleBodyParameterMessageFormatter.cs
- DateTimeFormat.cs
- ResXDataNode.cs
- LateBoundBitmapDecoder.cs
- ObjectQuery_EntitySqlExtensions.cs
- LoginName.cs
- DataBinding.cs
- JoinSymbol.cs
- BufferedReceiveManager.cs
- EncoderExceptionFallback.cs
- CompiledQuery.cs
- SQLInt16Storage.cs
- CodeIndexerExpression.cs
- QfeChecker.cs
- XsltContext.cs
- WindowsListViewSubItem.cs
- ReadingWritingEntityEventArgs.cs
- ExternalFile.cs
- ReflectionUtil.cs
- DataFieldConverter.cs
- XPathParser.cs