Blog Arksoft
  • Arksoft Bilisim
  • Scripts
    • SCCM (ConfigMgr)
    • Hyper-V
    • WSUS
    • Exchange Scripts
      • Exchange Virtual Directory Config
      • Virtual Directory Script
      • LogPath Config
  • NİSAN 2025
    • Exchange Server 2019 CU15 Apr25HU
    • Nisan 2025:Microsoft Güvenlik Güncellemeleri
    • Power BI Gateway ile On-Prem Verilerin Gücünü Keşfedin!
    • IT Personelleri Neden Adli Bilişim Farkındalık Eğitimi Almalıdır?
    • ''SCCM 2503'' Sürüm Yükseltme Rehberi
  • Mart 2025
    • SCCM Üzerinden Kritere Göre Uygulama ve Deployment’ları Otomatik Silmek
    • Mart 2025: Microsoft Güvenlik Güncellemeleri
  • ŞUBAT 2025
    • SPN Nedir, Kerberos Nasıl Çalışır ve Duplicate SPN Neden Sorun Yaratır?
    • Şubat 2025: Microsoft'un Güvenlik Güncellemeleriyle Sistemlerinizi Güçlendirin!
    • Exchange Server CU15 Güncellemesi
    • log_reuse_wait_desc Nedir ve Ne Anlatır?
  • OCAK 2025
    • Azure SQL Nedir? Temel Bilgiler ve Avantajlar
    • Live Migration için Ağ Kartı Seçerken Dikkat Edilmesi Gerekenler
    • Protected Attribute Nedir? Nasıl Oluşturulur?
    • Ocak 2025 Microsoft Güvenlik Güncellemeleri: Sistemlerinizi Güvende Tutun!
    • CLIUSR Hesabı Neden Önemlidir? CLIUSR sertifikası nedir, neden süresi doldu uyarısı alıyorum?
  • ARALIK 2024
    • TLS 1.2 Öncesi Protokollerin Güvenlik Açıkları ve TLS 1.2/1.3 Önemi
  • Kasım 2023
    • Microsoft Exchange Server Kasım Ayı Güvenlik Güncellemesi
  • Temmuz 2023
    • Microsoft Office Zero-Day Zafiyeti CVE-2023-36884
  • Mayis 2023
    • Hashing ve Salting Kavramları Nedir? Azure AD Parola Güvenliği Nasıl Sağlanır?
  • Nisan 2023
    • DDOS Saldırıları Nedir ve Korunma Yolları Nelerdir?
    • Fidye Yazılımları Nedir ve Korunma Yöntemleri Nelerdir?
    • Ransomwares And Defence Strategies
    • PowerShell Modülleri: Temel Kavramlar ve Kullanım Örnekleri
    • PowerShell Fonksiyonları: Temel Kavramlar ve Kullanım Örnekleri
    • PowerShell Cmdlet'ler: Temel Kavramlar ve Kullanım Örnekleri
    • PowerShell Değişkenleri: Temel Kavramlar ve Kullanım Örnekleri
    • PowerShell Nedir?
    • Oltalama E-Postalarından Korunma
    • CVE-2023-2033
    • Cloud Computing and Its Advantages
    • Bulut Bilişim Nedir ve Bulut Bilişimin Avantajları Nelerdir?
    • Bilgi ve İletişim Güvenliği Rehberi Nedir ve Rehbere Uyumlu Olmak Neden Önemlidir?
  • Mart 2023
    • Sık Kullanılan Portlar ve Üzerinde Çalışan Protokoller
    • Siber Güvenlik ve İnternet Dünyasında Güvende Kalmanın Yolları
    • Outlook Kullanıcılarına Uyarı: CVE-2023-23397 Güvenlik Açığına Karşı Önlem Alın
  • Şubat 2023
    • Üçüncü Parti Uygulamaların Güncellenmesinin Önemi
  • Aralık 2022
    • Siber Tehdit
    • FRS to DFSR Migration
  • Kasım 2022
    • Domain Controller 2022 Kasım Ayı Bug'ı
  • Mart 2022
    • OWA ve ECP erişim sorunu: Microsoft Exchange Server Auth Certificate is expired
    • MIM 2016 SSPR Türkçe Karakter Problemi
  • Haziran 2021
    • KMS (Key Management Service)
  • Ağustos 2020
    • Microsoft Teams Konuk (Guest) Erişimi ve Dış (External) Erişim- Sizin için hangisi uygun?1
    • SCCM 2006 Güncellemesi
    • Skype For Business 2019 Kurulumu- Hata Kodu 1603 (Server.msi(Feature_Server, Feature_HealthyAgent))
    • Skype for Business 2019 “Centralized Logging” Servisinin Başlatılamaması Problemi ve Çözümü
  • Temmuz 2020
    • Clean Inactive Agents from Operations Manager
  • Haziran 2020
    • Microsoft Teams Katılımcı Raporu İndirme
    • Microsoft Teams Toplantı ve Grup Sohbet Sınırı 300'e çıkarıldı
  • Mayıs 2020
    • MIM 2016 Service and Portal Kurulumundaki Bug
    • Telegram ve Powershell ile Sistem İzleme-Part 1
  • Ekim 2019
    • Windows Server 2019 Active Directory Domain Services Kurulumu
  • Nisan 2019
    • Huawei FusionCompute Kurulumu
  • Mart 2019
    • Password Reveal Düğmesi
  • Ocak 2019
    • ReportServer Veri Tabanı içerisinden RDL Dosyalarının Çıkartılması
  • Temmuz 2018
    • Active Directory Certificate Services - SHA1’ den SHA2’ ye Yükseltme
    • Local Administrator Password Solution
Powered by GitBook
On this page
  1. Mart 2022

MIM 2016 SSPR Türkçe Karakter Problemi

Samet Kara

Merhaba,

Bugün bir müşterimizde karşılaştığım ilginç bir hatayı ve bu hatayı çözmek için izlediğim yolu sizlerle paylaşmak istiyorum.

Bazı kullanıcılar Kendi Kendine Parola Sıfırlama Portalinde kullanıcı adlarını yazdıklarında aşağıdaki gibi bir hata ile karşılaşıyorlardı.

Günlük kayıtlarını incelediğimizde aşağıdaki gibi sonuçlarla karşılaştık.

Hatayı daha iyi inceleyebilmek için aşağıda vurguladığım fonksiyona erişmeye çalıştım.

Bunun için JetBrains'in DotPeek uygulamasını kullandım. Bu uygulama ile MIM Service kurulumunda bulunan tüm Dll ve exe dosyalarını açtım.

Microsoft.ResourceManagementWebServices.ResourceManagementService.GetUser(string nt4Name) fonksiyonunu buldum.

Bu fonksiyon DataAccess sınıfından GetUserFromName(nt4Name) fonksiyonunun çağırıldığını gördüm. İlgili sınıfı incelediğimde GetUserFromName(string name) fonksiyonunun kendisine iletilen name değerini ""karakterine göre ayırdığını ve elde ettiği iki değeri yine aynı sınıfta yer alan GetUserFromName(string domainName, string userName) fonksiyonunu çağırdığını, bu fonksiyonunda yine aynı sınıfta yer alan GetUser(string domainName, string userName) fonksiyonunu çağırdığını gördüm.

Son olarak GetUser(string domainName, string userName) fonksiyonunun "GetUserFromName" isimli stored procedure'ı çağırdığını gördüm.

İlgili stored procedure'ı aşağıda sizlerle paylaştım.

USE [MIMService]
GO
/****** Object:  StoredProcedure [fim].[GetUserFromName]    Script Date: 3/17/2022 3:49:32 PM ******/
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
--Read Only
ALTER
PROCEDURE [fim].[GetUserFromName]
    @Name NVARCHAR (MAX),
    @DomainName NVARCHAR (MAX),
    @UserID UNIQUEIDENTIFIER
OUTPUT
AS
BEGIN
--********************************************************
--*                                                      *
--*   Copyright (C) Microsoft. All rights reserved.      *
--*                                                      *
--********************************************************
    SET
NOCOUNT
ON;
    SELECT @UserID = [fim].[GetEmptyGuid]()
    DECLARE @accountNameAttributeKey SMALLINT;
    SELECT @accountNameAttributeKey = [fim].[AttributeKeyFromName](N'AccountName');
    DECLARE @domainAttributeKey SMALLINT;
    SELECT @domainAttributeKey = [fim].[AttributeKeyFromName](N'Domain');
    DECLARE @userObjectTypeKey SMALLINT;
    SELECT @userObjectTypeKey = [fim].[ObjectTypeKeyFromName](N'Person');
    SELECT @UserID = [fim].[GetIdentifierFromObjectKey](ovsA.[ObjectKey])
    FROM [fim].[ObjectValueString] as [ovsA]
    INNER
JOIN [fim].[ObjectValueString] as [ovsD]
    ON
        [ovsA].[ObjectKey] = [ovsD].[ObjectKey]
    WHERE
            @Name = [ovsA].[ValueString]
        AND [ovsA].[ObjectTypeKey] = @userObjectTypeKey
        AND [ovsA].[AttributeKey] = @accountNameAttributeKey
        AND @DomainName = [ovsD].[ValueString]
        AND [ovsD].[ObjectTypeKey] = @userObjectTypeKey
        AND [ovsD].[AttributeKey] = @domainAttributeKey;
END

Bu stored procedure [fim].[ObjectValueString] tablosunda @Name kullanıcı adına ve @DomainName domain adına sahip nesne için ObjectKey değerini bulup daha sonra bu değeri kullanarak [fim].[GetIdentifierFromObjectKey] stored procedure ile ilgili hesaba ait identifier değerini bulmaktadır.

Bu stored procedure ile testleri yaptığımda herhangi bir problem göremedim. İlgili kullanıcının da bu stored procedure kullanılarak identifier bulunabildiğini gördüm. Bu nedenle araştırmama SQL Trace başlatarak incelememe devam ettim. Trace başlattıktan sonra tekrar SSPR üzerinden aynı kullanıcı ile test yaptım.

Trace sonucunu incelediğimde kullanıcı adını büyük harflerle ya da küçük harflerle yazmamızdan yada başına netbiosname değerini yazmamızdan bağımsız olarak çalıştırılan sql komutunda kullanıcı adının küçük "ı" karakteriyle geldiğini gördüm.

Aynı sql cümleciğini çalıştırdığımda kullanıcı için identifier değerinin bulunamadığını gördüm. Ancak sorguda küçük 'ı' karakterlerini 'i' ile değiştirdiğimde kullanıcı için identifier değerinin bulunabildiğini gördüm.

Bunun üzerine GetUserFromName stored procedure a kullanıcı adında bulunan küçük 'ı' karakterini 'i' ile değiştirecek bir satır ekledim. Stored procedure'ın son halini aşağıda paylaşıyorum.

USE [MIMService]
GO
/****** Object:  StoredProcedure [fim].[GetUserFromName]    Script Date: 3/17/2022 3:49:32 PM ******/
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
--Read Only
ALTER
PROCEDURE [fim].[GetUserFromName]
    @Name NVARCHAR (MAX),
    @DomainName NVARCHAR (MAX),
    @UserID UNIQUEIDENTIFIER
OUTPUT
AS
BEGIN
--********************************************************
--*                                                      *
--*   Copyright (C) Microsoft. All rights reserved.      *
--*                                                      *
--********************************************************
-- SAMET KARA
    SELECT @Name=REPLACE(@Name, N'ı', N'i')
    SET
NOCOUNT
ON;
    SELECT @UserID = [fim].[GetEmptyGuid]()
    DECLARE @accountNameAttributeKey SMALLINT;
    SELECT @accountNameAttributeKey = [fim].[AttributeKeyFromName](N'AccountName');
    DECLARE @domainAttributeKey SMALLINT;
    SELECT @domainAttributeKey = [fim].[AttributeKeyFromName](N'Domain');
    DECLARE @userObjectTypeKey SMALLINT;
    SELECT @userObjectTypeKey = [fim].[ObjectTypeKeyFromName](N'Person');
    SELECT @UserID = [fim].[GetIdentifierFromObjectKey](ovsA.[ObjectKey])
    FROM [fim].[ObjectValueString] as [ovsA]
    INNER
JOIN [fim].[ObjectValueString] as [ovsD]
    ON
        [ovsA].[ObjectKey] = [ovsD].[ObjectKey]
    WHERE
            @Name = [ovsA].[ValueString]
        AND [ovsA].[ObjectTypeKey] = @userObjectTypeKey
        AND [ovsA].[AttributeKey] = @accountNameAttributeKey
        AND @DomainName = [ovsD].[ValueString]
        AND [ovsD].[ObjectTypeKey] = @userObjectTypeKey
        AND [ovsD].[AttributeKey] = @domainAttributeKey;
END

Bu değişiklikten sonra ilk sorguyu tekrar çalıştırdığımda identifier değerinin bulunabildiğini gördüm.

Daha sonra tekrar kullanıcının parolasını değiştirmeyi denediğimizde başarılı olduğunu gördük.

PreviousOWA ve ECP erişim sorunu: Microsoft Exchange Server Auth Certificate is expiredNextKMS (Key Management Service)

Last updated 2 years ago