private bool ProcessPartnerApplication(PartnerApplication partnerApplication) { bool result = false; AuthMetadata authMetadata = this.FetchMetadata(partnerApplication.Name, partnerApplication.AuthMetadataUrl, false); if (authMetadata == null) { return(false); } if (!OAuthCommon.IsIdMatch(partnerApplication.ApplicationIdentifier, authMetadata.ServiceName) || !OAuthCommon.IsRealmMatchIncludingEmpty(partnerApplication.Realm, authMetadata.Realm) || !string.Equals(partnerApplication.IssuerIdentifier, authMetadata.Issuer)) { this.Context.Logger.LogTerseEvent(MigrationEventType.Error, MSExchangeAuthAdminEventLogConstants.Tuple_InvalidTrustedIssuerChanges, new string[] { partnerApplication.Name, partnerApplication.AuthMetadataUrl }); return(false); } MultiValuedProperty <byte[]> multiValuedProperty = null; if (this.ProcessCertificates(partnerApplication.Name, partnerApplication.CertificateBytes, authMetadata.CertificateStrings, out multiValuedProperty) && multiValuedProperty != null) { result = true; partnerApplication.CertificateBytes = multiValuedProperty; } return(result); }
public static void FetchAuthMetadata(PartnerApplication partnerApplication, bool trustSslCert, bool updatePidOrRealmOrIssuer, Task.TaskWarningLoggingDelegate writeWarning, Task.TaskErrorLoggingDelegate writeError) { if (partnerApplication == null) { throw new ArgumentNullException("partnerApplication"); } if (writeWarning == null) { throw new ArgumentNullException("writeWarning"); } if (writeError == null) { throw new ArgumentNullException("writeError"); } AuthMetadata authMetadata = OAuthTaskHelper.FetchAuthMetadata(partnerApplication.AuthMetadataUrl, trustSslCert, false, writeWarning, writeError); if (updatePidOrRealmOrIssuer) { partnerApplication.ApplicationIdentifier = authMetadata.ServiceName; partnerApplication.IssuerIdentifier = authMetadata.Issuer; partnerApplication.Realm = authMetadata.Realm; } else if (!OAuthCommon.IsIdMatch(partnerApplication.ApplicationIdentifier, authMetadata.ServiceName) || !OAuthCommon.IsRealmMatchIncludingEmpty(partnerApplication.Realm, authMetadata.Realm) || !string.Equals(partnerApplication.IssuerIdentifier, authMetadata.Issuer)) { writeError(new TaskException(Strings.ErrorPidRealmIssuerDifferentFromMetadata(authMetadata.ServiceName, authMetadata.Realm, authMetadata.Issuer, partnerApplication.ApplicationIdentifier, partnerApplication.Realm, partnerApplication.IssuerIdentifier)), ErrorCategory.InvalidData, null); } partnerApplication.CertificateBytes = OAuthTaskHelper.InternalCertificateFromBase64String(authMetadata.CertificateStrings, writeError); }
public static void ValidateApplicationRealmAndUniqueness(PartnerApplication partnerApplication, IConfigurationSession configSession, Task.TaskErrorLoggingDelegate writeError) { if (partnerApplication == null) { throw new ArgumentNullException("partnerApplication"); } if (configSession == null) { throw new ArgumentNullException("configSession"); } if (writeError == null) { throw new ArgumentNullException("writeError"); } if (!partnerApplication.IsModified(PartnerApplicationSchema.ApplicationIdentifier) && !partnerApplication.IsModified(PartnerApplicationSchema.Realm) && !partnerApplication.IsModified(PartnerApplicationSchema.IssuerIdentifier)) { return; } if (OAuthCommon.IsRealmEmpty(partnerApplication.Realm) && !partnerApplication.UseAuthServer) { writeError(new TaskException(Strings.ErrorPartnerApplicationEmptyRealmWhenNotUseAuthServer), ErrorCategory.InvalidArgument, null); } ADObjectId containerId = PartnerApplication.GetContainerId(configSession); PartnerApplication[] source = configSession.Find <PartnerApplication>(containerId, QueryScope.OneLevel, new ComparisonFilter(ComparisonOperator.Equal, PartnerApplicationSchema.ApplicationIdentifier, partnerApplication.ApplicationIdentifier), null, ADGenericPagedReader <PartnerApplication> .DefaultPageSize); PartnerApplication partnerApplication2 = source.FirstOrDefault((PartnerApplication existingApp) => (OAuthCommon.IsRealmEmpty(partnerApplication.Realm) ? OAuthCommon.IsRealmEmpty(existingApp.Realm) : OAuthCommon.IsRealmMatch(existingApp.Realm, partnerApplication.Realm)) && !existingApp.Id.Equals(partnerApplication.Id)); if (partnerApplication2 != null) { writeError(new TaskException(Strings.ErrorDuplicatePartnerApplication(partnerApplication2.Id.ToString())), ErrorCategory.InvalidArgument, null); } if (!string.IsNullOrEmpty(partnerApplication.IssuerIdentifier)) { PartnerApplication partnerApplication3 = null; foreach (PartnerApplication partnerApplication4 in configSession.FindPaged <PartnerApplication>(containerId, QueryScope.OneLevel, null, null, ADGenericPagedReader <PartnerApplication> .DefaultPageSize)) { if (partnerApplication4.IssuerIdentifier == partnerApplication.IssuerIdentifier && !partnerApplication4.Id.Equals(partnerApplication.Id)) { partnerApplication3 = partnerApplication4; break; } } if (partnerApplication3 != null) { writeError(new TaskException(Strings.ErrorDuplicatePartnerApplication(partnerApplication3.Id.ToString())), ErrorCategory.InvalidArgument, null); } } }
// Token: 0x06001420 RID: 5152 RVA: 0x00048EA8 File Offset: 0x000470A8 public static PartnerApplicationRunspaceConfiguration Create(PartnerApplication partnerApplication) { if (partnerApplication == null) { throw new ArgumentNullException("partnerApplication"); } if (partnerApplication.LinkedAccount == null || partnerApplication.LinkedAccount.IsDeleted) { throw new CmdletAccessDeniedException(Strings.ErrorPartnerApplicationWithoutLinkedAccount(partnerApplication.Id.ToString())); } ADUser aduser = LinkedAccountCache.Instance.Get(partnerApplication.LinkedAccount); if (aduser == null) { throw new CmdletAccessDeniedException(Strings.ErrorManagementObjectNotFound(partnerApplication.LinkedAccount.ToString())); } return(new PartnerApplicationRunspaceConfiguration(PartnerApplicationRunspaceConfiguration.LinkedAccountIdentity.Create(aduser))); }
// Token: 0x06000B1A RID: 2842 RVA: 0x00023B7C File Offset: 0x00021D7C public PartnerApplicationIdParameter(PartnerApplication app) : base(app.Id) { }
public AuthServerIdParameter(PartnerApplication app) : base(app.Id) { }