Exchange

OnPrem Exchange ile Teams Takvim Entegrasyonu

Merhaba, bu yazımda can sıkıcı olan, teams’in onprem exchange ile kullanımında takvim kısmının kullanılamıyor olmasını ele alacağım.

Öncelikle ihtiyacımız olan;

Onprem exchange 2016 ve üzeri,

Azure subscriptions;

Global Admin rolüne sahip bir hesap.

 

İlk olarak yapmamız gereken Azure modüllerini yüklemek. Bu adımların hepsini gereksinimi sağlayan bir exchange server üzerinde gerçekleştiriyoruz.

1

Sonra ki adımımızda mggraph servisine bağlantı sağlıyoruz. Bu adımda dikkat edilmesi gereken husus bağlanacağınız hesabın global admin rolüne sahip olması gerekmekte.

2

Global admin yetkili hesabımız ile giriş yapıyoruz.

3

Akabinde “Install-Module ExchangeOnlineManagement” modülünü yüklüyoruz.

4

Elimizde bulunması gereken 3 adet script dosyası olacak. Bunları başlıkları ile beraber aşağıya bırakıyorum;

ExportAuthCert.ps1

$thumbprint = (Get-AuthConfig).CurrentCertificateThumbprint
if((Test-Path $env:SYSTEMDRIVE\OAuthConfig) -eq $false)
{
New-Item -Path $env:SYSTEMDRIVE\OAuthConfig -Type Directory
}
Set-Location -Path $env:SYSTEMDRIVE\OAuthConfig
$oAuthCert = (dir Cert:\LocalMachine\My) | Where-Object {$_.Thumbprint -match $thumbprint}
$certType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
$certBytes = $oAuthCert.Export($certType)
$CertFile = “$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer”
[System.IO.File]::WriteAllBytes($CertFile, $certBytes)

 

RegisterEndpoint.ps1

$ServiceName = “00000002-0000-0ff1-ce00-000000000000”;
$x = Get-MgServicePrincipal -Filter “AppId eq ‘$ServiceName'”
$x.ServicePrincipalNames += “https://tolgakaya.tr/”
$x.ServicePrincipalNames += “https://autodiscover.tolgakaya.tr/”
Update-MgServicePrincipal -ServicePrincipalId $x.Id -ServicePrincipalNames $x.ServicePrincipalNames

 

UploadAuthCert.ps1

Connect-MgGraph -Scopes Application.ReadWrite.All

$CertFile = “$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer”
$objFSO = New-Object -ComObject Scripting.FileSystemObject
$CertFile = $objFSO.GetAbsolutePathName($CertFile)
$cer = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($CertFile)
$binCert = $cer.GetRawCertData()
$credValue = [System.Convert]::ToBase64String($binCert)
$ServiceName = “00000002-0000-0ff1-ce00-000000000000”
Write-Host “[+] Trying to query the service principals for service: $ServiceName” -ForegroundColor Cyan
$p = Get-MgServicePrincipal -Filter “AppId eq ‘$ServiceName'”
Write-Host “[+] Trying to query the keyCredentials for service: $ServiceName” -ForegroundColor Cyan
$servicePrincipalKeyInformation = Get-MgServicePrincipal -Filter “AppId eq ‘$ServiceName'” -Select “keyCredentials”

$keyCredentialsLength = $servicePrincipalKeyInformation.KeyCredentials.Length
if ($keyCredentialsLength -gt 0) {
Write-Host “[+] $keyCredentialsLength existing key(s) found – we keep them if they have not expired” -ForegroundColor Cyan

$newCertAlreadyExists = $false
$servicePrincipalObj = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphServicePrincipal
$keyCredentialsArray = @()

foreach ($cred in $servicePrincipalKeyInformation.KeyCredentials) {
$thumbprint = [System.Convert]::ToBase64String($cred.CustomKeyIdentifier)

Write-Host “[+] Processing existing key: $($cred.DisplayName) thumbprint: $thumbprint” -ForegroundColor Cyan

if ($newCertAlreadyExists -ne $true) {
$newCertAlreadyExists = ($cer.Thumbprint).Equals($thumbprint, [System.StringComparison]::OrdinalIgnoreCase)
}

if ($cred.EndDateTime -lt (Get-Date)) {
Write-Host “[+] This key has expired on $($cred.EndDateTime) and will not be retained” -ForegroundColor Yellow
continue
}

$keyCredential = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphKeyCredential
$keyCredential.Type = “AsymmetricX509Cert”
$keyCredential.Usage = “Verify”
$keyCredential.Key = $cred.Key

$keyCredentialsArray += $keyCredential
}

if ($newCertAlreadyExists -eq $false) {
Write-Host “[+] New key: $($cer.Subject) thumbprint: $($cer.Thumbprint) will be added” -ForegroundColor Cyan
$keyCredential = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphKeyCredential
$keyCredential.Type = “AsymmetricX509Cert”
$keyCredential.Usage = “Verify”
$keyCredential.Key = [System.Text.Encoding]::ASCII.GetBytes($credValue)

$keyCredentialsArray += $keyCredential

$servicePrincipalObj.KeyCredentials = $keyCredentialsArray
Update-MgServicePrincipal -ServicePrincipalId $p.Id -BodyParameter $servicePrincipalObj
} else {
Write-Host “[+] New key: $($cer.Subject) thumbprint: $($cer.Thumbprint) already exists and will not be uploaded again” -ForegroundColor Yellow
}
} else {
$params = @{
type = “AsymmetricX509Cert”
usage = “Verify”
key = [System.Text.Encoding]::ASCII.GetBytes($credValue)
}

Write-Host “[+] This is the first key which will be added to this service principal” -ForegroundColor Cyan
Update-MgServicePrincipal -ServicePrincipalId $p.Id -KeyCredentials $params
}

 

Sonrasında Exchange Management Shell kısmında sırasıyla aşağıda ki komutları çalıştırıyoruz. Komutları kendinize göre revize etmeniz gerekmekte;

5

Daha önce kaydettiğimiz ps1 dosyasını import ediyoruz.

6

Aşağıda ki gibi bir sertifika çıkarıyor.

7

Şimdi tekrar powershell’e geçip aşağıda ki komutu çalıştırıyoruz.

8

Daha öncesinde edindiğimiz “RegisterEndpoint.ps1” dosyasını kendimize göre düzenliyoruz ve sonrasında powershell üzerinde ps1 dosyasını çalıştırıyoruz.

 

9

Daha sonrasında Exchange Management Shell’e geçip şu komutu çalıştırıyoruz ;

New-IntraOrganizationConnector -Name ExchangeHybridOnPremisesToOnline -DiscoveryEndpoint https://outlook.office365.com/autodiscover/autodiscover.svc -TargetAddressDomains “tolgakayatr.mail.onmicrosoft.com”

10

Akabinde Powershell’e tekrar geçip şu komutu çalıştırıyoruz ;

New-IntraOrganizationConnector -Name ExchangeHybridOnlineToOnPremises -DiscoveryEndpoint “https://mail.trt.net.tr/autodiscover/autodiscover.svc” -TargetAddressDomains “tolgakaya.tr”

11

Operasyon bu kadar arkadaşlar. Bu işlemleri yaptıktan sonra onprem exchange kullanırken teams uygulamasında takvim bölümünü aktif olarak kullanabileceksiniz.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu