Rehber: Microsoft Entra ID'de bir SCIM uç noktası için sağlamayı geliştirme ve planlama

Uygulama geliştiricisi olarak, uygulamanızla Microsoft Entra ID arasında kullanıcıların ve grupların otomatik olarak sağlanmasını sağlamak için Etki Alanları Arası Kimlik Yönetimi (SCIM) kullanıcı yönetimi API'sini kullanabilirsiniz. Bu makalede, SCIM uç noktasının nasıl oluşturulması ve Microsoft Entra sağlama hizmetiyle tümleştirilmesi açıklanmaktadır. SCIM belirtimi, sağlama için ortak bir kullanıcı şeması sağlar. SAML veya OpenID Connect gibi federasyon standartlarıyla kullanıldığında SCIM, yöneticilere erişim yönetimi için uçtan uca, standartlara dayalı bir çözüm sunar.

Microsoft Entra ID'den SCIM içeren bir uygulamaya sağlama

SCIM 2.0, /Users ve /Groups uç noktalarını içeren temel kaynak uç noktalarını tanımlayan standartlaştırılmış bir protokoldür. Nesneleri oluşturmak, güncelleştirmek ve silmek için yaygın REST API uç noktalarını kullanır. SCIM grup adı, kullanıcı adı, ad, soyadı ve e-posta gibi yaygın öznitelikler için önceden tanımlanmış bir şemadan oluşur.

SCIM 2.0 REST API'sini sunan uygulamalar, özel bir kullanıcı yönetimi API'siyle çalışma zahmetini azaltabilir veya ortadan kaldırabilir. Örneğin, uyumlu herhangi bir SCIM istemcisi yeni bir kullanıcı girdisi oluşturmak için uç noktaya bir JSON nesnesinin HTTP POST'unun /Users nasıl yapılacağını bilir. Aynı temel eylemler için biraz farklı bir API'ye ihtiyaç duymanız yerine, SCIM standardına uyan uygulamalar önceden var olan istemcilerden, araçlardan ve kodlardan anında yararlanabilir.

SCIM 2.0'da tanımlanan yönetim için standart kullanıcı nesnesi şeması ve rest API'leri (RFC 7642, 7643, 7644), kimlik sağlayıcılarının ve uygulamaların birbirleriyle daha kolay tümleştirilmesine olanak tanır. SCIM uç noktası oluşturan uygulama geliştiricileri, özel iş yapmak zorunda kalmadan SCIM uyumlu herhangi bir istemciyle tümleştirebilir.

Bir uygulamaya sağlamayı otomatikleştirmek için, Microsoft Entra sağlama hizmeti tarafından erişen bir SCIM uç noktasının oluşturulması ve tümleştirilmesi gerekir. Uygulamanıza kullanıcı ve grup sağlamaya başlamak için aşağıdaki adımları kullanın.

  1. Kullanıcı ve grup şemanızı tasarlayın - Microsoft Entra SCIM uygulaması tarafından desteklenen kullanıcı ve grup şemasıyla nasıl eşleneceğini belirlemek için uygulamanın nesnelerini ve özniteliklerini tanımlayın.

  2. MICROSOFT ENTRA SCIM uygulamasını anlama - SCIM protokol isteği işleme ve yanıtlarınızı modellemek için Microsoft Entra sağlama hizmetinin nasıl uygulandığını anlayın.

  3. BIR SCIM uç noktası oluşturun - Uç noktanın Microsoft Entra sağlama hizmetiyle tümleştirilebilmesi için SCIM 2.0 uyumlu olması gerekir. Seçenek olarak, uç noktanızı oluşturmak için Microsoft Ortak Dil Altyapısı (CLI) kitaplıklarını ve kod örneklerini kullanın. Bu örnekler yalnızca başvuru ve test amaçlıdır; bunları üretim uygulamanızda bağımlılık olarak kullanmamanızı öneririz.

  4. SCIM uç noktanızı Microsoft Entra sağlama hizmetiyle tümleştirme. Microsoft Entra ID SCIM 2.0 uygulayan birkaç üçüncü taraf uygulamasını destekler. Eğer bu uygulamalardan birini kullanırsanız, kullanıcıların ve grupların sağlamasını ve sağlamayı kaldırmayı hızlı bir şekilde otomatikleştirebilirsiniz.

  5. [İsteğe bağlı] Uygulamanızı Microsoft Entra uygulama galerisine yayımlayın - Müşterilerin uygulamanızı keşfetmesini ve sağlamayı kolayca yapılandırmasını kolaylaştırın.

Microsoft Entra ID ile bir SCIM uç noktasını entegre etmek için gerekli adımları gösteren diyagram.

Kullanıcı ve grup şemanızı tasarlama

Her uygulama, kullanıcı veya grup oluşturmak için farklı öznitelikler gerektirir. Uygulamanızın ihtiyaç duyduğu gerekli nesneleri (kullanıcılar, gruplar) ve öznitelikleri (ad, yönetici, iş unvanı vb.) tanımlayarak tümleştirmenizi başlatın.

SCIM standardı, kullanıcıları ve grupları yönetmek için bir şema tanımlar.

Çekirdek kullanıcı şeması yalnızca üç öznitelik gerektirir (diğer tüm öznitelikler isteğe bağlıdır):

  • id, hizmet sağlayıcısı tanımlı tanımlayıcı
  • userName, kullanıcının benzersiz tanımlayıcısı (genellikle Microsoft Entra kullanıcı asıl adıyla eşler)
  • meta, hizmet sağlayıcısı tarafından tutulan salt okunur meta veriler

Çekirdek kullanıcı şemasına ek olarak SCIM standardı, kullanıcı şemasını uygulamanızın gereksinimlerini karşılayacak şekilde genişletmeye yönelik bir modele sahip bir kurumsal kullanıcı uzantısı tanımlar.

Örneğin, uygulamanız hem kullanıcının e-postasına hem de kullanıcının yöneticisine ihtiyaç duyuyorsa, kullanıcının e-postasını toplamak için çekirdek şemayı ve kullanıcının yöneticisini toplamak için kurumsal kullanıcı şemasını kullanın.

Şemanızı tasarlamak için şu adımları izleyin:

  1. Uygulamanızın gerektirdiği öznitelikleri listeleyin, ardından kimlik doğrulaması için gereken öznitelikler olarak kategorilere ayırın (örneğin, loginName ve e-posta). Kullanıcı yaşam döngüsünü (örneğin, durum / etkin) ve uygulamanın çalışması için gereken diğer tüm öznitelikleri (örneğin, yönetici, etiket) yönetmek için öznitelikler gereklidir.

  2. Özniteliklerin çekirdek kullanıcı şemasında mı yoksa kurumsal kullanıcı şemasında tanımlandığını denetleyin. Aksi takdirde, eksik öznitelikleri kapsayan bir kullanıcı şeması uzantısı tanımlamanız gerekir. Bir kullanıcının sağlanmasına izin vermek için kullanıcıya yönelik bir taguzantı örneğine bakın.

  3. SCIM özniteliklerini Microsoft Entra ID kullanıcı öznitelikleriyle eşleyin. SCIM uç noktanızda tanımladığınız özniteliklerden birinin Microsoft Entra kullanıcı şemasında net bir karşılığı yoksa, kiracı yöneticisine şemasını genişletmesi için yol göster veya tags özelliği örneğinde gösterildiği gibi bir uzantı özniteliği kullanın.

Aşağıdaki tabloda gerekli özniteliklere bir örnek liste verilmiştir:

Gerekli uygulama özniteliği/örnek Eşlenmiş SCIM özniteliği Eşlenmiş Microsoft Entra özniteliği
kullanıcı adı kullanıcı adı kullanıcıAnaAdı
ön ad isim verilenAdi
soyadı name.soyadı soyadı
iş postası e-postalar[type eq "iş"].value Posta
yönetici yönetici yönetici
etiket urn:ietf:params:scim:schemas:extension:CustomExtensionName:2.0:User:tag uzantıÖzniteliği1
durum etkin isSoftDeleted (hesaplanan değer kullanıcıda depolanmaz)

Aşağıdaki JSON yükü örnek bir SCIM şemasını gösterir:

{
     "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
      "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
      "urn:ietf:params:scim:schemas:extension:CustomExtensionName:2.0:User"],
     "userName":"bjensen@testuser.com",
     "id": "48af03ac28ad4fb88478",
     "externalId":"bjensen",
     "name":{
       "familyName":"Jensen",
       "givenName":"Barbara"
     },
     "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
     "manager": "123456"
   },
     "urn:ietf:params:scim:schemas:extension:CustomExtensionName:2.0:User": {
     "tag": "701984",
   },
   "meta": {
     "resourceType": "User",
     "created": "2010-01-23T04:56:22Z",
     "lastModified": "2011-05-13T04:42:34Z",
     "version": "W\/\"3694e05e9dff591\"",
     "location":
 "https://example.com/v2/Users/00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
   }
}   

Not

Uygulama için gerekli özniteliklere ek olarak, JSON gösterimi gerekli id, externalIdve meta özniteliklerini de içerir.

/User ile /Group arasında kategorilere ayırmaya yardımcı olarak Microsoft Entra ID'daki varsayılan kullanıcı özniteliklerini SCIM RFC'sine eşler, bkz. Özetleme öznitelikleri Microsoft Entra ID ile SCIM uç noktanız arasında nasıl eşlenir.

Aşağıdaki tabloda kullanıcı özniteliklerine bir örnek liste verilmiştir:

Microsoft Entra kullanıcı urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
IsSoftDeleted etkin
bölüm urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department
görüntü adı görüntü adı
çalışanKimliği urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber
Facsimile-TelephoneNumber telefonNumaralari[tür eş "faks"].değer
verilenAdi isim
iş unvanı başlık
posta e-postalar[type eq "iş"].value
e-posta takma adı harici kimlik
yönetici urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager
http://technet.microsoft.com/en-us/dn451248 telefonNumaralari[tür eşit "mobil"].değer
posta kodu adresler[tür eşit "iş"].postaKodu
proxy-Adresleri emails[type eq "other"]. Değer
fiziksel-Teslimat-OfisAdı addresses[type eq "other"].Biçimlendirilmiş
sokak adresi addresses[type eq "work"].caddeAdresi
soyadı name.soyadı
telefon numarası phoneNumbers[türü "iş" eşittir].değer
kullanıcı-AsılAd kullanıcı adı

Aşağıdaki tabloda grup özniteliklerine bir örnek liste verilmiştir:

Microsoft Entra grubu urn:ietf:params:scim:schemas:core:2.0:Group
görüntü adı görüntü adı
üyeler üyeler
objectId (nesne kimliği) harici kimlik

Not

Hem kullanıcıları hem de grupları veya burada gösterilen tüm öznitelikleri desteklemeniz gerekmez, yalnızca Microsoft Entra ID'daki özniteliklerin SCIM protokolündeki özelliklerle nasıl eşlendiğine ilişkin bir başvuru olur.

SCIM RFC'de tanımlanan birkaç uç nokta vardır. Uç noktasından /User başlayıp buradan genişletebilirsiniz. Aşağıdaki tabloda bazı SCIM uç noktaları listelemektedir:

Uç nokta Açıklama
/Kullanıcı Kullanıcı nesnesinde CRUD işlemleri gerçekleştirme.
/Grup Bir grup nesnesi üzerinde CRUD işlemleri gerçekleştirme.
/Şemalar Her istemci ve hizmet sağlayıcısı tarafından desteklenen öznitelik kümesi farklılık gösterebilir. Bir hizmet sağlayıcısı , nameve titlekullanırken, başka bir hizmet sağlayıcısı emails, nameve titleiçerebilirphoneNumbers. Şemalar uç noktası, desteklenen özniteliklerin bulunmasına olanak tanır.
/Yığın Toplu işlemler, tek bir işlemde (örneğin, büyük bir grup için üyelikleri güncelleştirme) büyük bir kaynak nesneleri koleksiyonu üzerinde işlem gerçekleştirmenizi sağlar. ScIM /Bulk'ı bugün desteklemesek de, gelecekte performansı geliştirmeye yardımcı olmak için desteklemeyi hedeflediğimiz bir şeydir.
/ServiceProviderConfig Desteklenen SCIM standardının özellikleri hakkında, örneğin desteklenen kaynaklar ve kimlik doğrulama yöntemi hakkında ayrıntılar sağlar.
/Kaynak Türleri Her kaynakla ilgili meta verileri belirtir.

Not

/Schemas Özel öznitelikleri desteklemek için uç noktayı kullanın veya istemcinin en güncel şemayı otomatik olarak almasına olanak sağladığından şemanız sık sık değişiyorsa. /Bulk Grupları desteklemek için uç noktayı kullanın. Bugün /Bulk uç noktasını desteklemesek de bu, gelecekte performansı geliştirmeye yardımcı olmak için desteklemeyi hedeflediğimiz bir şeydir.

Microsoft Entra SCIM uygulamasını anlama

Microsoft Entra sağlama hizmeti, SCIM 2.0 kullanıcı yönetimi API'sini destekleyecek şekilde tasarlanmıştır.

Önemli

Microsoft Entra SCIM uygulamasının davranışı son olarak 18 Aralık 2018'de güncelleştirildi. Değişenler hakkında bilgi için bkz. Microsoft Entra kullanıcı sağlama hizmetinin SCIM 2.0 protokol uyumluluğu.

SCIM 2.0 protokol belirtiminde uygulamanızın şu gereksinimleri desteklemesi gerekir:

Gereksinim Başvuru notları (SCIM protokolü)
Kullanıcı oluşturma ve isteğe bağlı olarak grup oluşturma Bölüm 3.3
PATCH istekleriyle kullanıcıları veya grupları değiştirme Bölüm 3.5.2. Destek, grupların ve kullanıcıların yüksek performanslı bir şekilde sağlanmasını sağlar.
Daha önce oluşturulan bir kullanıcı veya grup için bilinen bir kaynağı alma Bölüm 3.4.1
Kullanıcıları veya grupları sorgulama Bölüm 3.4.2. Varsayılan olarak, kullanıcılar ile alınır id ve ve usernameexternalIdile sorgulanır ve grupları ile displayNamesorgulanır.
Grup kaynağını sorgularken excludedAttributes=members filtresi Bölüm 3.4.2.2
Kullanıcıları listeleme ve sayfalandırma desteği Bölüm 3.4.2.4.
Kullanıcıyı geçici olarak silme ve kullanıcıyı active=false geri yükleme active=true Kullanıcı nesnesi, kullanıcının etkin olup olmamasına bakılmaksızın bir istekte döndürülmelidir. Kullanıcının döndürülmemesi gereken tek zaman, uygulamanın sabit olarak silinmesidir.
/Schemas uç noktasını destekleme Bölüm 7 Şema bulma uç noktası, daha fazla öznitelik bulmak için kullanılır.
Uygulamanız için Microsoft Entra ID kimlik doğrulaması ve yetkilendirmesi amacıyla tek bir bearer token kabul edin.

Microsoft Entra ID uyumluluğu sağlamak için SCIM uç noktasını uygularken genel yönergeleri kullanın:

Genel:

  • id tüm kaynaklar için gerekli bir özelliktir. Bir kaynak döndüren her yanıt, sıfır öğe dışında ListResponse her kaynağın bu özelliğe sahip olduğundan emin olmalıdır.
  • Gönderilen değerler, gönderildikleri biçimde depolanmalıdır. Geçersiz değerler açıklayıcı, eyleme dönüştürülebilir bir hata iletisiyle reddedilmelidir. Microsoft Entra ID verileri ile SCIM uygulamasında depolanan veriler arasında veri dönüştürmeleri gerçekleşmemelidir. (örneğin. 55555555555 olarak gönderilen bir telefon numarası +5 (555) 555-5555) olarak kaydedilmemeli/döndürülmemelidir
  • Patch yanıtına kaynağın tamamının dahil edilmesi gerekmez.
  • SCIM'deki yapısal öğelerde, özellikle PATCHop işlem değerlerinde büyük/küçük harfe duyarlı eşleşmeye gerek yoktur, bölüm 3.5.2'de tanımlandığı gibi. Microsoft Entra ID op değerlerini Add, Replace ve Remove olarak gösterir.
  • Microsoft Entra ID, uç noktanın ve kimlik bilgilerinin geçerli olduğundan emin olmak için rastgele bir kullanıcı ve grup getirme isteklerinde bulunur. Ayrıca Test Bağlantısı akışının bir parçası olarak da gerçekleştirilir.
  • SCIM uç noktanızda HTTPS desteği.
  • Özel karmaşık ve çok değerli öznitelikler desteklenir, ancak Microsoft Entra ID bu durumlarda veri çekebileceği çok fazla karmaşık veri yapısı yoktur. Ad/değer öznitelikleri kolayca eşlenebilir, ancak üç veya daha fazla alt öğe içeren karmaşık özniteliklere veri akışı desteklenmez.
  • Çok değerli karmaşık özniteliklerin "tür" alt öznitelik değerleri benzersiz olmalıdır. Örneğin, "work" alt türüne sahip iki farklı e-posta adresi olamaz.
  • Tüm yanıtların üst bilgisi content-Type: application/scim+json olmalıdır

Kaynaklar Alınıyor:

  • Sorgu/filtre isteğine yanıt her zaman bir ListResponseolmalıdır.
  • yalnızca Microsoft Entra şu işleçleri kullanır: eq, and
  • Kaynakların sorgulanabileceği öznitelik, uygulamada eşleşen bir öznitelik olarak ayarlanmalıdır. Bkz . Kullanıcı Sağlama Öznitelik Eşlemelerini Özelleştirme.

/Kullanıcı:

  • Yetkilendirme özniteliği desteklenmiyor.
  • Kullanıcı benzersizliği için kabul edilen tüm öznitelikler, filtrelenmiş sorgunun parçası olarak kullanılabilir olmalıdır. (örneğin, kullanıcı benzersizliği hem userName eşittir "user@contoso.com" hem de emails[tipi eşittir "iş"].value eşittir "user@contoso.com" olarak değerlendirilirse, filtreli bir /Users üzerinde GET, hem userName eşittir "user@contoso.com" hem de emails[tipi eşittir "iş"].value eşittir "user@contoso.com" sorgularına izin vermelidir.

/Gruplar:

  • Gruplar isteğe bağlıdır, ancak yalnızca SCIM uygulaması PATCH isteklerini destekliyorsa desteklenir.
  • Grupların Microsoft Entra ID ve SCIM uygulamasıyla eşleşmesi için 'displayName' değerinde benzersiz olması gerekir. Benzersizlik, SCIM protokolünün bir gereksinimi değildir, ancak SCIM uç noktasını Microsoft Entra ID ile tümleştirmek için bir gereksinimdir.

/Schemas (Şema bulma):

  • Örnek istek/yanıt
  • Şema bulma, belirli galeri uygulamalarında kullanılıyor. Şema bulma, mevcut bir galeri SCIM uygulamasının şemasına daha fazla öznitelik eklemek için tek yöntemdir. Şema bulma şu anda özel galeri dışı SCIM uygulamasında desteklenmiyor.
  • Eğer bir değer mevcut değilse, null değerler göndermeyin.
  • Özellik değerleri camelCase biçiminde yazılmalıdır (örneğin, readWrite).
  • Liste şeklinde bir yanıt döndürmelidir.
  • Microsoft Entra sağlama hizmeti, sağlama yapılandırmasını kaydettiğinizde /schemas isteğinde bulunur. Düzenleme sağlama sayfasını açtığınızda da talepte bulunulur. Bulunan diğer öznitelikler, hedef öznitelik listesinin altındaki öznitelik eşlemelerinde müşterilere sunulur. Şema bulma yalnızca daha fazla hedef özniteliğin eklenmesine yol açar. Öznitelikler kaldırılmaz.

Kullanıcı hesabı oluşturma ve kaldırma

Aşağıdaki diyagramda, Microsoft Entra ID uygulamanızın kimlik deposundaki bir kullanıcının yaşam döngüsünü yönetmek için scim uç noktasına gönderdiği iletiler gösterilmektedir.

Kullanıcının sağlamasını kaldırma sırasını gösteren diyagram.

Grup sağlama ve sağlamayı kaldırma

Grupların sağlanması ve iptali isteğe bağlıdır. Uygulandığında ve etkinleştirildiğinde, aşağıdaki çizimde Microsoft Entra ID'nin uygulamanızın kimlik deposundaki bir grubun yaşam döngüsünü yönetmek için SCIM uç noktasına gönderdiği iletiler gösterilmektedir. Bu iletiler, kullanıcılarla ilgili iletilerden iki şekilde farklıdır:

  • Grupları alma istekleri, üyeler özniteliğinin isteğe yanıt olarak sağlanan herhangi bir kaynaktan dışlanması gerektiğini belirtir.
  • Bir başvuru özniteliğinin belirli bir değere sahip olup olmadığını belirleme istekleri, üyeler özniteliğiyle ilgili isteklerdir.

Aşağıdaki diyagramda grup sağlama kaldırma sırası gösterilmektedir.

Grup sağlama kaldırma sırasını gösteren diyagram.

SCIM protokol istekleri ve yanıtları

Bu makalede, Microsoft Entra sağlama hizmeti tarafından yayılan örnek SCIM istekleri ve örnek beklenen yanıtlar sağlanır. En iyi sonuçları elde etmek için uygulamanızı bu istekleri bu biçimde işleyecek ve beklenen yanıtları yayacak şekilde kodlamalısınız.

Önemli

Microsoft Entra kullanıcı sağlama hizmetinin örnekte açıklanan işlemleri nasıl ve ne zaman yaydığını anlamak için Provisioning cycles: initial and incremental in How provisioning works bölümüne bakın.

Kullanıcı İşlemleri

Grup İşlemleri

Şema bulma

Kullanıcı İşlemleri

  • Kullanıcıları sorgulamak için userName veya emails[type eq "work"] özniteliklerini kullanın.

Kullanıcı oluşturma

İstek

POST /Kullanıcılar

{
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User",
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"],
    "externalId": "0a21f0f2-8d2a-4f8e-bf98-7363c4aed4ef",
    "userName": "Test_User_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "active": true,
    "emails": [{
        "primary": true,
        "type": "work",
        "value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com"
    }],
    "meta": {
        "resourceType": "User"
    },
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName"
    },
    "roles": []
}
Yanıt

HTTP/1.1 201 Oluşturuldu

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "48af03ac28ad4fb88478",
    "externalId": "0a21f0f2-8d2a-4f8e-bf98-7363c4aed4ef",
    "meta": {
        "resourceType": "User",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
    },
    "userName": "Test_User_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName",
    },
    "active": true,
    "emails": [{
        "value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com",
        "type": "work",
        "primary": true
    }]
}
SCIM Doğrulayıcı tarafından gerçekleştirilen doğrulamalar

Yeni Kullanıcı Oluştur

  • POST /Users – Eksiksiz bir JSON yüküne sahip yeni bir kullanıcı oluşturur.
    • Uç nokta HTTP 201 döndürür
    • POST yanıtı, oluşturulan kullanıcı kimliğini içeriyor
  • GET /Users?filter={joiningProperty} eq "value" – Birleştirme özelliğine göre filtreleyerek oluşturma işlemini doğrular.
    • GET, oluşturulan kullanıcıyı döndürür
    • GET'den döndürülen değerler POST isteğinden geçirilen değerlerle eşleşmektedir (uç noktaya göre değişir)
  • DELETE /Users - Test Kullanıcılarını Temizler. -Yalnızca kalıcı silme destekleniyorsa çağrılır

Yinelenen Kullanıcı Oluştur

  • POST /Users – Mevcut bir kullanıcıyla aynı benzersiz/birleştirme özniteliğine sahip aynı yükü kullanarak yeni bir kullanıcı oluşturmayı dener.
    • İlk oluşturma isteğinde HTTP 201 döndür
    • İkinci oluşturma isteğinde HTTP 409 döndür

Kullanıcı Al

İstek

GET /kullanıcılar/5d48a0a8e9f04aa38008

Yanıt (Kullanıcı bulundu)

HTTP/1.1 200 Tamam

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "5d48a0a8e9f04aa38008",
    "externalId": "58342554-38d6-4ec8-948c-50044d0a33fd",
    "meta": {
        "resourceType": "User",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
    },
    "userName": "Test_User_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName",
    },
    "active": true,
    "emails": [{
        "value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com",
        "type": "work",
        "primary": true
    }]
}
İstek

GET /kullanıcılar/5171a35d82074e068ce2

Yanıt (Kullanıcı bulunamadı. Ayrıntı gerekli değildir, yalnızca durumdur.)

HTTP/1.1 404 Bulunamadı

{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:Error"
    ],
    "status": "404",
    "detail": "Resource 23B51B0E5D7AE9110A49411D@7cca31655d49f3640a494224 not found"
}

Sorguya Göre Kullanıcı Getir

İstek

GET /Users?filter=userName eq "Test_User_00aa00aa-bb11-cc22-dd33-44ee44ee44ee"

Yanıt

HTTP/1.1 200 Tamam

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults": 1,
    "Resources": [{
        "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
        "id": "2441309d85324e7793ae",
        "externalId": "7fce0092-d52e-4f76-b727-3955bd72c939",
        "meta": {
            "resourceType": "User",
            "created": "2018-03-27T19:59:26.000Z",
            "lastModified": "2018-03-27T19:59:26.000Z"
            
        },
        "userName": "Test_User_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
        "name": {
            "familyName": "familyName",
            "givenName": "givenName"
        },
        "active": true,
        "emails": [{
            "value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com",
            "type": "work",
            "primary": true
        }]
    }],
    "startIndex": 1,
    "itemsPerPage": 20
}

Sorguya göre kullanıcı alma - Sıfır sonuç

İstek

GET /Users?filter=userName eq "mevcut olmayan kullanıcı"

Yanıt

HTTP/1.1 200 Tamam

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults": 0,
    "Resources": [],
    "startIndex": 1,
    "itemsPerPage": 20
}

Kullanıcıyı Güncelleştirme [Çok değerli özellikler]

İstek

PATCH /Kullanıcılar/6764549bef60420686bc HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
            {
            "op": "Replace",
            "path": "emails[type eq \"work\"].value",
            "value": "updatedEmail@microsoft.com"
            },
            {
            "op": "Replace",
            "path": "name.familyName",
            "value": "updatedFamilyName"
            }
    ]
}
Yanıt

HTTP/1.1 200 Tamam

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "6764549bef60420686bc",
    "externalId": "6c75de36-30fa-4d2d-a196-6bdcdb6b6539",
    "meta": {
        "resourceType": "User",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
    },
    "userName": "Test_User_00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "name": {
        "formatted": "givenName updatedFamilyName",
        "familyName": "updatedFamilyName",
        "givenName": "givenName"
    },
    "active": true,
    "emails": [{
        "value": "updatedEmail@microsoft.com",
        "type": "work",
        "primary": true
    }]
}

Kullanıcıyı Güncelleştirme [Tek değerli özellikler]

İstek

PATCH /Kullanıcılar/5171a35d82074e068ce2 HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [{
        "op": "Replace",
        "path": "userName",
        "value": "5b50642d-79fc-4410-9e90-4c077cdd1a59@testuser.com"
    }]
}
Yanıt

HTTP/1.1 200 Tamam

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
    "id": "5171a35d82074e068ce2",
    "externalId": "aa1eca08-7179-4eeb-a0be-a519f7e5cd1a",
    "meta": {
        "resourceType": "User",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
        
    },
    "userName": "5b50642d-79fc-4410-9e90-4c077cdd1a59@testuser.com",
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName",
    },
    "active": true,
    "emails": [{
        "value": "Test_User_11bb11bb-cc22-dd33-ee44-55ff55ff55ff@testuser.com",
        "type": "work",
        "primary": true
    }]
}
SCIM Doğrulayıcı tarafından gerçekleştirilen doğrulamalar

Öznitelik Ekle

  • POST /Users - Kullanıcı kaynağını oluşturur
    • HTTP 2xx başarısı
  • PATCH /Users/{id} – Gerekli olmayan başka öznitelikler eklemek için bir JSON Patch belgesi (ekleme işlemiyle birlikte) kullanır.
  • GET /Users?filter={joiningProperty} eq "value" – Eklenen öznitelikleri doğrulamak için kullanıcıyı alır.
    • Kullanıcı döndürülür
    • Eklenen öznitelikler artık kullanıcıda var

Kullanıcı Özniteliklerini Değiştir

  • POST /Users - Kullanıcı kaynağını oluşturur
    • HTTP 2xx başarısı
  • PATCH /Users/{id} – Bir veya daha fazla özniteliği güncelleştirmek için bir JSON Patch belgesi (değiştirme işlemini kullanarak) gönderir.
  • GET /Users?filter={joiningProperty} eq "value" – Güncelleştirilmiş özniteliklerin doğru uygulandığını doğrular.
    • Kullanıcı döndürülür
    • Güncelleştirilmiş öznitelikler kullanıcıda var

Birleştirme Özelliğini Güncelle

  • POST /Users - Kullanıcı kaynağını oluşturur
    • HTTP 2xx başarısı
  • PATCH /Users/{id} – JSON Patch belgesi aracılığıyla birleştirme özelliğini (örneğin, userName) güncelleştirir.
  • GET /Users?filter={joiningProperty} eq "newValue" – Birleştirme özelliğinin güncelleştirildiğini onaylar.
    • Katılma özelliği kullanıcıda güncelleştirildi

Kullanıcıyı Devre Dışı Bırak

İstek

PATCH /Kullanıcılar/5171a35d82074e068ce2 HTTP/1.1

{
    "Operations": [
        {
            "op": "Replace",
            "path": "active",
            "value": false
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:PatchOp"
    ]
}
Yanıt
{
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "id": "CEC50F275D83C4530A495FCF@834d0e1e5d8235f90a495fda",
    "userName": "deanruiz@testuser.com",
    "name": {
        "familyName": "Harris",
        "givenName": "Larry"
    },
    "active": false,
    "emails": [
        {
            "value": "gloversuzanne@testuser.com",
            "type": "work",
            "primary": true
        }
    ],
    "addresses": [
        {
            "country": "ML",
            "type": "work",
            "primary": true
        }
    ],
    "meta": {
        "resourceType": "Users",
        "location": "/scim/5171a35d82074e068ce2/Users/CEC50F265D83B4530B495FCF@5171a35d82074e068ce2"
    }
}
SCIM Doğrulayıcı tarafından gerçekleştirilen doğrulamalar

Etkin Özniteliği False Olarak Güncelleştir

  • POST /Users/ - Şemayı temel alan bir kaynak oluşturur
    • HTTP 2xx başarısı
    • Devre dışı bırakılan kullanıcı GET isteğinde döndürülmelidir
  • PATCH /Users/{id} – "etkin" özniteliği false olarak ayarlayan bir JSON Patch belgesi verir.
    • HTTP 2xx başarısı
  • GET /Users?filter={joiningProperty} eq "value" – Etkin özniteliğin artık false olduğunu doğrulamak için kullanıcıyı getirir.
    • Kullanıcı kaydının döndürülen hali ACTIVE=FALSE olmalıdır.

Kullanıcıyı Silme

İstek

DELETE /Users/5171a35d82074e068ce2 HTTP/1.1

Yanıt

HTTP/1.1 204 İçerik Yok

Grup İşlemleri

  • Gruplar boş bir üye listesiyle oluşturulur.
  • Grupları sorgulamak için displayName özniteliğini kullanın.
  • PATCH isteğine yapılan güncelleştirme, yanıtta HTTP 204 No Content değeri vermelidir. Tüm üyelerin listesini içeren bir cesedi geri döndürmek önerilmez.
  • Grubun tüm üyelerinin döndürülmesi desteklenemez.

Grup oluşturma

İstek

POST /Groups HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group", "http://schemas.microsoft.com/2006/11/ResourceManagement/ADSCIM/2.0/Group"],
    "externalId": "8aa1a0c0-c4c3-4bc0-b4a5-2ef676900159",
    "displayName": "displayName",
    "meta": {
        "resourceType": "Group"
    }
}
Yanıt

HTTP/1.1 201 Oluşturuldu

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "id": "927fa2c08dcb4a7fae9e",
    "externalId": "8aa1a0c0-c4c3-4bc0-b4a5-2ef676900159",
    "meta": {
        "resourceType": "Group",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
        
    },
    "displayName": "displayName",
    "members": []
}
SCIM Doğrulayıcı tarafından gerçekleştirilen doğrulamalar

Yeni Grup Oluştur

  • POST /Groups – Eksiksiz bir JSON yüküne sahip yeni bir grup oluşturur.
    • Uç nokta HTTP 201 döndürür
    • POST yanıtı, oluşturulan grup kimliğini içeriyor
  • GET /Group?filter={joiningProperty} eq "value" – Birleştirme özelliğine göre filtreleyerek oluşturma işlemini doğrular.
    • GET, oluşturulan grubu döndürür
    • GET'den döndürülen değerler POST isteğinden geçirilen değerlerle eşleşmektedir (uç noktaya göre değişir)
  • DELETE /Groups - Test Kullanıcılarını Temizler.
    • Yalnızca sabit silme destekleniyorsa çağrılır

Çoğaltılmış Grup Oluştur

  • POST /Groups – Mevcut bir grubun benzersiz/birleştirme özniteliğiyle aynı yükü kullanarak yeni bir grup oluşturmaya çalışır.
    • İlk oluşturma isteğinde HTTP 201 döndür
    • İkinci oluşturma isteğinde HTTP 409 döndür

Grup Al

İstek

GET /Groups/40734ae655284ad3abcc?excludedAttributes=members HTTP/1.1

Yanıt

HTTP/1.1 200 Tamam

{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "id": "40734ae655284ad3abcc",
    "externalId": "60f1bb27-2e1e-402d-bcc4-ec999564a194",
    "meta": {
        "resourceType": "Group",
        "created": "2018-03-27T19:59:26.000Z",
        "lastModified": "2018-03-27T19:59:26.000Z"
    },
    "displayName": "displayName",
}

displayName'e göre Grupla

İstek

GET /Groups?excludedAttributes=members&filter=displayName eq "displayName" HTTP/1.1 (Bu, belirli bir grubun displayName özelliğini eşitlemek ve members özelliğini dışlamak için kullanılan bir HTTP istek sözdizimidir.)

Yanıt

HTTP/1.1 200 Tamam

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults": 1,
    "Resources": [{
        "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
        "id": "8c601452cc934a9ebef9",
        "externalId": "0db508eb-91e2-46e4-809c-30dcbda0c685",
        "meta": {
            "resourceType": "Group",
            "created": "2018-03-27T22:02:32.000Z",
            "lastModified": "2018-03-27T22:02:32.000Z",
            
        },
        "displayName": "displayName",
    }],
    "startIndex": 1,
    "itemsPerPage": 20
}

Grubu Güncelleştirme [Üye olmayan öznitelikler]

İstek

PATCH /Gruplar/fa2ce26709934589afc5 HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [{
        "op": "Replace",
        "path": "displayName",
        "value": "1879db59-3bdf-4490-ad68-ab880a269474updatedDisplayName"
    }]
}
Yanıt

HTTP/1.1 204 İçerik Yok

SCIM Doğrulayıcı tarafından gerçekleştirilen doğrulamalar

Grup Özniteliklerini Güncelleştirme

  • POST /Groups - Öznitelikleri güncelleştirmek için yeni bir grup kaynağı oluşturur
    • POST HTTP 2xx döndürür
  • PATCH /Groups/{id} – Var olan bir grubun (üyeler hariç) bir veya daha fazla özniteliğini güncelleştirmek için değiştirme işlemini kullanarak bir JSON Düzeltme Eki belgesi gönderir.
    • PATCH başarı döndürüyor (HTTP 2xx)
  • GET /Groups?filter={joiningProperty} eq "value" – Grubun özniteliklerinin doğru güncelleştirildiğini onaylar.
    • GET, yama uygulanmış grubu döndürür
    • Döndürülen gruptaki öznitelikler, PATCH isteğinde değiştirilen özniteliklerle eşleşir.

Grubu Güncelleştirme [Üye Ekle]

İstek

PATCH /Gruplar/a99962b9f99d4c4fac67 HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [{
        "op": "Add",
        "path": "members",
        "value": [{
            "$ref": null,
            "value": "f648f8d5ea4e4cd38e9c"
        }]
    }]
}
Yanıt

HTTP/1.1 204 İçerik Yok

SCIM Doğrulayıcı tarafından gerçekleştirilen doğrulamalar

Yeni Grup Kaynağı Oluşturma

  • POST /Groups - Üye eklemek için yeni bir grup kaynağı oluşturur
    • POST HTTP 2xx döndürür
  • POST /Users – Grup üyesi olarak kullanılacak yeni bir kullanıcı kaynağı oluşturur.
    • POST HTTP 2xx döndürür
  • PATCH /Groups/{id} – JSON Patch belgesi kullanarak yeni oluşturulan kullanıcının tanımlayıcısını gruba ekler.
    • PATCH başarılı bir şekilde sonuç verir

Grubu Güncelleştirme [Üyeleri Kaldır]

İstek

PATCH /Gruplar/a99962b9f99d4c4fac67 HTTP/1.1

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [{
        "op": "Remove",
        "path": "members",
        "value": [{
            "$ref": null,
            "value": "f648f8d5ea4e4cd38e9c"
        }]
    }]
}
Yanıt

HTTP/1.1 204 İçerik Yok

Grubu Sil

İstek

DELETE /Groups/cdb1ce18f65944079d37 HTTP/1.1

Yanıt

HTTP/1.1 204 İçerik Yok

Şema keşfi

Şemayı bulma

İstek

GET /Şemalar

Yanıt

HTTP/1.1 200 Tamam

{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "itemsPerPage": 50,
    "startIndex": 1,
    "totalResults": 3,
    "Resources": [
  {
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Schema"],
    "id" : "urn:ietf:params:scim:schemas:core:2.0:User",
    "name" : "User",
    "description" : "User Account",
    "attributes" : [
      {
        "name" : "userName",
        "type" : "string",
        "multiValued" : false,
        "description" : "Unique identifier for the User, typically
used by the user to directly authenticate to the service provider.
Each User MUST include a non-empty userName value.  This identifier
MUST be unique across the service provider's entire set of Users.
REQUIRED.",
        "required" : true,
        "caseExact" : false,
        "mutability" : "readWrite",
        "returned" : "default",
        "uniqueness" : "server"
      },                
    ],
    "meta" : {
      "resourceType" : "Schema",
      "location" :
        "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
    }
  },
  {
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Schema"],
    "id" : "urn:ietf:params:scim:schemas:core:2.0:Group",
    "name" : "Group",
    "description" : "Group",
    "attributes" : [
      {
        "name" : "displayName",
        "type" : "string",
        "multiValued" : false,
        "description" : "A human-readable name for the Group.
REQUIRED.",
        "required" : false,
        "caseExact" : false,
        "mutability" : "readWrite",
        "returned" : "default",
        "uniqueness" : "none"
      },
    ],
    "meta" : {
      "resourceType" : "Schema",
      "location" :
        "/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group"
    }
  },
  {
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Schema"],
    "id" : "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
    "name" : "EnterpriseUser",
    "description" : "Enterprise User",
    "attributes" : [
      {
        "name" : "employeeNumber",
        "type" : "string",
        "multiValued" : false,
        "description" : "Numeric or alphanumeric identifier assigned
to a person, typically based on order of hire or association with an
organization.",
        "required" : false,
        "caseExact" : false,
        "mutability" : "readWrite",
        "returned" : "default",
        "uniqueness" : "none"
      },
    ],
    "meta" : {
      "resourceType" : "Schema",
      "location" :
"/v2/Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
    }
  }
]
}

Güvenlik gereksinimleri

TLS Protokolü Sürümleri

Kabul edilebilir tek protokol sürümü TLS 1.2'dir. Başka bir SSL/TLS sürümüne izin verilmez.

  • RSA anahtarları en az 2.048 bit olmalıdır.
  • ECC anahtarları en az 256 bit olmalı ve onaylanmış bir eliptik eğri kullanılarak oluşturulmalıdır

Anahtar Uzunlukları

Tüm hizmetler, yeterli uzunlukta şifreleme anahtarları kullanılarak oluşturulan X.509 sertifikalarını kullanmalıdır, yani:

Şifre Paketleri

Tüm hizmetler, örnekte belirtilen sırada aşağıdaki şifreleme paketlerini kullanacak şekilde yapılandırılmalıdır. Yalnızca bir RSA sertifikanız varsa ECDSA şifreleme paketlerinin herhangi bir etkisi yoktur.

TLS 1.2 Şifre Paketleri asgari gereksinimi:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

IP Aralıkları

Microsoft Entra provisioning hizmeti şu anda burada listelendiği gibi Microsoft Entra ID'nin IP Aralıkları altında çalışır. Microsoft Entra sağlama hizmetinden uygulamanıza gelen trafiğe izin vermek için AzureActiveDirectory etiketi altında listelenen IP aralıklarını ekleyebilirsiniz. Hesaplanan adresler için IP aralığı listesini dikkatle gözden geçirmeniz gerekir. IP aralığı listesinde '40.126.25.32' gibi bir adres '40.126.0.0/18' olarak gösterilebilir. Aşağıdaki API'yi kullanarak IP aralığı listesini program aracılığıyla da alabilirsiniz.

Microsoft Entra ID özel ağlardaki uygulamalara (şirket içi, Azure barındırılan, AWS'de barındırılan vb.) bağlantı sağlamak için aracı tabanlı bir çözümü de destekler. Müşteriler, özel ağlarındaki bir sunucuda gelen bağlantı noktaları açmadan Microsoft Entra ID ile bağlantı sağlayan hafif bir aracı dağıtabilir. Buradan daha fazla bilgi edinin.

SCIM uç noktası oluşturma

Şemanızı tasarladığınıza ve Microsoft Entra SCIM uygulamasını anladığınıza göre, SCIM uç noktanızı geliştirmeye başlayabilirsiniz. Sıfırdan başlayıp uygulamayı tamamen kendiniz oluşturmak yerine, SCIM topluluğu tarafından yayımlanan birçok açık kaynak SCIM kitaplığına güvenebilirsiniz.

Örnekler de dahil olmak üzere bir SCIM uç noktası oluşturma yönergeleri için bkz . Örnek SCIM uç noktası geliştirme.

Microsoft Entra sağlama ekibi tarafından yayımlanan açık kaynak .NET Core reference kod örneği geliştirmenize hızlı bir başlangıç yapabilecek kaynaklardan biridir. Bir SCIM uç noktası oluşturun, ardından sağlanan örnek istekleri / yanıtları çalıştırarak test edin.

Not

Başvuru kodu, SCIM uç noktanızı oluşturmaya başlamanıza yardımcı olmak için tasarlanmıştır ve "OLDUĞU GIBI" sağlanır. Topluluğun katkıları, kodun oluşturulmasına ve korunmasına yardımcı olabilir.

Çözüm, Microsoft adlı iki projeden oluşur. SCIM ve Microsoft. SCIM. WebHostSample.

Microsoft. SCIM projesi, web hizmetinin SCIM belirtimine uygun bileşenlerini tanımlayan kitaplıktır. Microsoft.SCIM.IProvider arabirimini bildirir, istekler sağlayıcının yöntemlerine yapılan çağrılara dönüştürülür, bu da bir kimlik deposunda çalışacak şekilde programlanabilir.

Çözümleme: Sağlayıcının yöntemlerine yönelik çağrılara çevrilmiş bir talep

Microsoft. SCIM. WebHostSample projesi, Empty şablonunu temel alan ASP.NET Core bir Web Uygulamasıdır. Örnek kodun tek başına dağıtılmasını, kapsayıcılarda veya Internet Information Services içinde barındırılmasını sağlar. Ayrıca sınıfları örnek kimlik deposu olarak bellekte tutan Microsoft.SCIM.IProvider arabirimini uygular.

public class Startup
{
    ...
    public IMonitor MonitoringBehavior { get; set; }
    public IProvider ProviderBehavior { get; set; }

    public Startup(IWebHostEnvironment env, IConfiguration configuration)
    {
        ...
        this.MonitoringBehavior = new ConsoleMonitor();
        this.ProviderBehavior = new InMemoryProvider();
    }
    ...

Özel SCIM uç noktası oluşturma

SCIM uç noktasının, kök sertifika yetkilisinin aşağıdaki adlardan biri olduğu bir HTTP adresi ve sunucu kimlik doğrulama sertifikası olmalıdır:

  • CNNIC
  • Comodo
  • Siber Güven
  • DigiCert
  • Coğrafi Güven
  • GlobalSign
  • GoDaddy
  • VeriSign
  • WoSign (İngilizce)
  • DST Kök CA X3

.NET Core SDK'sı geliştirme sırasında kullanılan bir HTTPS geliştirme sertifikası içerir. Sertifika, ilk çalıştırma deneyiminin bir parçası olarak yüklenir. ASP.NET Core Web Uygulamasını nasıl çalıştırdığınıza bağlı olarak farklı bir bağlantı noktasını dinler:

  • Microsoft. SCIM. WebHostSample: https://localhost:5001
  • IIS Ekspresi: https://localhost:44359

ASP.NET Core'da HTTPS hakkında daha fazla bilgi için şu bağlantıyı kullanın: ASP.NET Core

Uç nokta kimlik doğrulamayı işleme

Microsoft Entra sağlama hizmetinden gelen istekler bir OAuth 2.0 taşıyıcı belirteci içerir. Yetkilendirme sunucusu taşıyıcı belirteci gönderir. Microsoft Entra ID, güvenilir yetkilendirme sunucusu örneğidir. Microsoft Entra sağlama hizmetini aşağıdaki belirteçlerden birini kullanacak şekilde yapılandırın:

  • Uzun ömürlü bir jeton. SCIM uç noktası Microsoft Entra ID dışında bir verenden OAuth taşıyıcı belirteci gerektiriyorsa, gerekli OAuth taşıyıcı belirtecini isteğe bağlı Secret Belirteci alanına kopyalayın. Geliştirme ortamında, uç noktadan test belirtecini /scim/token kullanabilirsiniz. Test belirteçleri üretim ortamlarında kullanılmamalıdır.

  • Microsoft Entra taşıyıcı belirteci. Secret Token alanı boş bırakılırsa, Microsoft Entra ID her istekle Microsoft Entra ID tarafından verilen bir OAuth taşıyıcı belirteci içerir. Kimlik sağlayıcısı olarak Microsoft Entra ID kullanan uygulamalar, Microsoft Entra ID tarafından verilen bu belirteci doğrulayabilir.

    • İstekleri alan uygulama, belirteç verenin beklenen bir Microsoft Entra kiracı için Microsoft Entra ID olduğunu doğrulamalıdır.
    • Talep iss , belirtecin verenini tanımlar. Örneğin, "iss":"https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/". Bu örnekte, talep değerinin temel adresi, https://sts.windows.net Microsoft Entra ID veren olarak tanımlarken aaabbbb-0000-cccc-1111-dddd2222eeee göreli adres kesimi, belirtecin verildiği Microsoft Entra kiracısının benzersiz tanımlayıcısıdır.
    • Belirtecin hedef kitlesi, galerideki uygulamanın Uygulama Kimliği'dir . Tek bir kiracıda kayıtlı uygulamalar SCIM istekleriyle aynı iss talebi alır. Tüm özel uygulamaların uygulama kimliği 8adf8e6e-67b2-4cf2-a259-e3dc5476c621 şeklindedir. Microsoft Entra ID tarafından oluşturulan belirteç yalnızca test için kullanılmalıdır. Üretim ortamlarında kullanılmamalıdır.

Örnek kodda, istekler Microsoft.AspNetCore.Authentication.JwtBearer paketi kullanılarak doğrulanır. Aşağıdaki kod, belirtilen bir kiracı için Microsoft Entra ID tarafından verilen taşıyıcı belirteci kullanılarak hizmetin uç noktalarına yönelik isteklerin kimliğinin doğrulandığını zorlar:

public void ConfigureServices(IServiceCollection services)
{
    if (_env.IsDevelopment())
    {
        ...
    }
    else
    {
        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
            .AddJwtBearer(options =>
            {
                options.Authority = " https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/";
                options.Audience = "8adf8e6e-67b2-4cf2-a259-e3dc5476c621";
                ...
            });
    }
    ...
}

public void Configure(IApplicationBuilder app)
{
    ...
    app.UseAuthentication();
    app.UseAuthorization();
    ...
}

Örnek kod, geliştirme aşamasında kimlik doğrulama seçeneklerini değiştirmek ve otomatik olarak imzalanan belirteç kullanımını etkinleştirmek için ASP.NET Core ortamları kullanır.

ASP.NET Core'daki birden çok ortam hakkında daha fazla bilgi için bkz. ASP.NET Core'da birden çok ortam kullanma.

Aşağıdaki kod, hizmetin uç noktalarına yönelik isteklerin özel anahtarla imzalanmış taşıyıcı belirteci kullanılarak kimliğinin doğrulandığını zorunlu kılır:

public void ConfigureServices(IServiceCollection services)
{
    if (_env.IsDevelopment())
    {
        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters =
                new TokenValidationParameters
                {
                    ValidateIssuer = false,
                    ValidateAudience = false,
                    ValidateLifetime = false,
                    ValidateIssuerSigningKey = false,
                    ValidIssuer = "Microsoft.Security.Bearer",
                    ValidAudience = "Microsoft.Security.Bearer",
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("A1B2C3D4E5F6A1B2C3D4E5F6"))
                };
        });
    }
...

Geçerli bir taşıyıcı belirteci almak için Belirteç denetleyicisine bir GET isteği gönderin; GenerateJSONWebToken yöntemi geliştirme için yapılandırılan parametrelerle eşleşen bir belirteç oluşturmakla sorumludur:

private string GenerateJSONWebToken()
{
    // Create token key
    SymmetricSecurityKey securityKey =
        new SymmetricSecurityKey(Encoding.UTF8.GetBytes("A1B2C3D4E5F6A1B2C3D4E5F6"));
    SigningCredentials credentials =
        new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

    // Set token expiration
    DateTime startTime = DateTime.UtcNow;
    DateTime expiryTime = startTime.AddMinutes(120);

    // Generate the token
    JwtSecurityToken token =
        new JwtSecurityToken(
            "Microsoft.Security.Bearer",
            "Microsoft.Security.Bearer",
            null,
            notBefore: startTime,
            expires: expiryTime,
            signingCredentials: credentials);

    string result = new JwtSecurityTokenHandler().WriteToken(token);
    return result;
}

Kullanıcıların sağlanmasını ve geri alınmasını yönetme

Örnek 1. Eşleşen bir kullanıcı için hizmeti sorgulama

Microsoft Entra ID, externalId öznitelik değeri Microsoft Entra ID'deki bir kullanıcının mailNickname öznitelik değeriyle eşleşen bir kullanıcıyı bulmak için hizmeti sorgular. Sorgu, bu örnek gibi bir Köprü Metni Aktarım Protokolü (HTTP) isteği olarak ifade edilir; burada jyoung, bir kullanıcının Microsoft Entra ID'deki *mailNickname* örneğidir.

Not

Bu yalnızca bir örnektir. Tüm kullanıcıların mailNickname özniteliği olmaz ve kullanıcının sahip olduğu değer dizinde benzersiz olmayabilir. Ayrıca, eşleştirme için kullanılan öznitelik (bu örnekte externalId) Microsoft Entra öznitelik eşlemelerinde yapılandırılabilir.

GET https://.../scim/Users?filter=externalId eq jyoung HTTP/1.1
 Authorization: Bearer ...

Örnek kodda istek, hizmet sağlayıcısının QueryAsync yöntemine yapılan bir çağrıya çevrilir. Bu yöntemin imzası aşağıdadır:

// System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
// Microsoft.SCIM.IRequest is defined in 
// Microsoft.SCIM.Service.  
// Microsoft.SCIM.Resource is defined in 
// Microsoft.SCIM.Schemas.  
// Microsoft.SCIM.IQueryParameters is defined in 
// Microsoft.SCIM.Protocol.  

Task<Resource[]> QueryAsync(IRequest<IQueryParameters> request);

Örnek sorguda, özniteliği için belirli bir değere sahip bir kullanıcı için externalId QueryAsync yöntemine geçirilen bağımsız değişkenlerin değerleri şunlardır:

  • Parametreler.AlternateFilters.Count: 1
  • Parametre. AlternateFilters.ElementAt(0). AttributePath: "externalId"
  • Parametre.AlternateFilters.ElementAt(0).ComparisonOperator: ComparisonOperator.Equals
  • Parametreler.AlternateFilter.ElementAt(0).ComparisonValue: "jyoung"

Örnek 2. Kullanıcı sağlama

Microsoft Entra ID, bir kullanıcının mailNickname öznitelik değeriyle eşleşen externalId öznitelik değerine sahip bir kullanıcının SCIM uç noktasına yönelik bir sorgunun yanıtı, herhangi bir kullanıcı döndürmüyorsa, hizmetin Microsoft Entra ID'deki kullanıcıya karşılık gelen bir kullanıcı sağlamasını talep eder. Bu tür bir istek örneği aşağıda verilmişti:

POST https://.../scim/Users HTTP/1.1
Authorization: Bearer ...
Content-type: application/scim+json
{
   "schemas":
   [
     "urn:ietf:params:scim:schemas:core:2.0:User",
     "urn:ietf:params:scim:schemas:extension:enterprise:2.0User"],
   "externalId":"jyoung",
   "userName":"jyoung@testuser.com",
   "active":true,
   "addresses":null,
   "displayName":"Joy Young",
   "emails": [
     {
       "type":"work",
       "value":"jyoung@Contoso.com",
       "primary":true}],
   "meta": {
     "resourceType":"User"},
    "name":{
     "familyName":"Young",
     "givenName":"Joy"},
   "phoneNumbers":null,
   "preferredLanguage":null,
   "title":null,
   "department":null,
   "manager":null}

Örnek kodda istek, hizmet sağlayıcısının CreateAsync yöntemine yapılan bir çağrıya çevrilir. Bu yöntemin imzası aşağıdadır:

// System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
// Microsoft.SCIM.IRequest is defined in 
// Microsoft.SCIM.Service.  
// Microsoft.SCIM.Resource is defined in 
// Microsoft.SCIM.Schemas.  

Task<Resource> CreateAsync(IRequest<Resource> request);

Kullanıcı sağlama isteğinde, kaynak argümanının değeri Microsoft.SCIM.Core2EnterpriseUser sınıfının bir örneğidir. Bu sınıf Microsoft.SCIM.Schemas kitaplığında tanımlanır. Kullanıcıyı sağlama isteği başarılı olursa, yönteminin uygulanmasının Microsoft.SCIM.Core2EnterpriseUser sınıfının bir örneğini döndürmesi beklenir. özelliğinin Identifier değeri, yeni sağlanan kullanıcının benzersiz tanımlayıcısına ayarlanır.

Örnek 3. Kullanıcının geçerli durumunu sorgulama

Microsoft Entra ID aşağıdaki gibi bir istekle belirtilen kullanıcının geçerli durumunu hizmetten istemektedir:

GET ~/scim/Users/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 HTTP/1.1
Authorization: Bearer ...

Örnek kodda istek, hizmet sağlayıcısının RetrieveAsync yöntemine yapılan bir çağrıya çevrilir. Bu yöntemin imzası aşağıdadır:

// System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
// Microsoft.SCIM.IRequest is defined in 
// Microsoft.SCIM.Service.  
// Microsoft.SCIM.Resource and 
// Microsoft.SCIM.IResourceRetrievalParameters 
// are defined in Microsoft.SCIM.Schemas 

Task<Resource> RetrieveAsync(IRequest<IResourceRetrievalParameters> request);

İstek örneğinde, kullanıcının geçerli durumunu almak için, parametre bağımsız değişkeninin değeri olarak sağlanan nesnenin özelliklerinin değerleri aşağıdaki gibidir:

  • Tanımlayıcı: "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1e1e1"
  • Şema Tanımlayıcısı: urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

Örnek 4. Güncelleştirilecek başvuru özniteliğinin değerini sorgulama

Microsoft Entra ID güncelleştirmeden önce kimlik deposundaki geçerli öznitelik değerini denetler. Ancak, yalnızca yönetici özniteliği kullanıcılar için ilk denetlenen özniteliktir. Bir kullanıcı nesnesinin yönetici özniteliğinin şu anda belirli bir değere sahip olup olmadığını saptamak için bir istek örneği aşağıda verilmiştir: Örnek kodda istek, hizmet sağlayıcısının QueryAsync yöntemine yapılan bir çağrıya çevrilir. Parametre bağımsız değişkeninin değeri olarak sağlanan nesnenin özelliklerinin değeri aşağıdaki gibidir:

  • parametreler.AlternateFilters.Count: 2
  • Parametreler.AlternateFilters.ElementAt(x).AttributePath: "ID"
  • Parametreler.AlternateFilters.ElementAt(x).KarşılaştırmaOperatörü: KarşılaştırmaOperatörü.Eşittir
  • Parametre. AlternateFilter.ElementAt(x). ComparisonValue: "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1e1e1"
  • parametreler.AlternateFilters.ElementAt(y).AttributePath: "manager"
  • parametre.AlternateFilters.ElementAt(y).ComparisonOperator: ComparisonOperator.Eşittir
  • Parametre. AlternateFilter.ElementAt(y). ComparisonValue: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
  • Parametreler.RequestedAttributePaths.ElementAt(0): "ID"
  • Parametreler SchemaIdentifier: urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

x dizininin değeri ve 0 y dizininin değeri olabilir 1. Veya x değeri, 1 y değeri olabilir 0. Filtre sorgusu parametresinin ifadelerinin sırasına bağlıdır.

Örnek 5. Bir kullanıcıyı güncellemek için Microsoft Entra ID'den SCIM uç noktasına istekte bulunma

İşte, Microsoft Entra ID'nin bir SCIM Uç Noktası'na kullanıcı güncelleme isteği örneği:

PATCH ~/scim/Users/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 HTTP/1.1
Authorization: Bearer ...
Content-type: application/scim+json
{
    "schemas": 
    [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations":
    [
      {
        "op":"Add",
        "path":"manager",
        "value":
          [
            {
              "$ref":"http://.../scim/Users/00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
              "value":"00aa00aa-bb11-cc22-dd33-44ee44ee44ee"}]}]}

Örnek kodda istek, hizmet sağlayıcısının UpdateAsync yöntemine yapılan bir çağrıya çevrilir. Bu yöntemin imzası aşağıdadır:

// System.Threading.Tasks.Tasks and 
// System.Collections.Generic.IReadOnlyCollection<T>  // are defined in mscorlib.dll.  
// Microsoft.SCIM.IRequest is defined in
// Microsoft.SCIM.Service.
// Microsoft.SCIM.IPatch, 
// is defined in Microsoft.SCIM.Protocol. 

Task UpdateAsync(IRequest<IPatch> request);

İstek örneğinde, bir kullanıcıyı güncelleştirmek için düzeltme eki bağımsız değişkeninin değeri olarak sağlanan nesne şu özellik değerlerine sahiptir:

Bağımsız değişken Değer
ResourceIdentifier.Identifier "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1e1e1e1"
ResourceIdentifier.SchemaIdentifier urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
(PatchRequest as PatchRequest2).Operations.Count 1
(PatchRequest as PatchRequest2).Operations.ElementAt(0).OperationName OperationName.Add
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Path.AttributePath Yönetici
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.Count 1
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Reference http://.../scim/Users/00aa00aa-bb11-cc22-dd33-44ee44ee44ee
(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Value 00aa00aa-bb11-cc22-dd33-44ee44ee44ee

Örnek 6. Bir kullanıcının erişimini kaldırma

SCIM uç noktasının önünde yer alan bir kimlik deposundan bir kullanıcının sağlamasını iptal etmek için Microsoft Entra ID, şu gibi bir istek gönderir:

DELETE ~/scim/Users/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 HTTP/1.1
Authorization: Bearer ...

Örnek kodda istek, hizmet sağlayıcısının DeleteAsync yöntemine yapılan bir çağrıya çevrilir. Bu yöntemin imzası aşağıdadır:

// System.Threading.Tasks.Tasks is defined in mscorlib.dll.  
// Microsoft.SCIM.IRequest is defined in 
// Microsoft.SCIM.Service.  
// Microsoft.SCIM.IResourceIdentifier, 
// is defined in Microsoft.SCIM.Protocol. 

Task DeleteAsync(IRequest<IResourceIdentifier> request);

resourceIdentifier bağımsız değişkeninin değeri olarak sağlanan nesne, bir kullanıcının sağlamasını kaldırma isteği örneğinde şu özellik değerlerine sahiptir:

  • ResourceIdentifier.Identifier: "a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
  • KaynakTanımlayıcı.SemaTanımlayıcı: urn:ietf:params:scim:schemas:extension:enterprise:2.0:User

SCIM uç noktanızı Microsoft Entra sağlama hizmetiyle tümleştirme

Microsoft Entra ID, SCIM 2.0 protokolünün belirli bir profilini uygulayan uygulamalara atanan kullanıcıları ve grupları otomatik olarak sağlamak üzere yapılandırılabilir. Profilin özellikleri Microsoft Entra SCIM uygulamasını anlama'da belgelenmiştir.

Bu gereksinimlerle uyumluluk bildirimleri için uygulama sağlayıcınıza veya uygulama sağlayıcınızın belgelerine bakın.

Önemli

Microsoft Entra SCIM uygulaması, kullanıcıların Microsoft Entra ID ile hedef uygulama arasında sürekli eşitlenmesini sağlamak için tasarlanmış ve çok özel bir standart işlem kümesi uygulayan Microsoft Entra kullanıcı sağlama hizmetinin üzerine kurulmuştur. Microsoft Entra sağlama hizmetinin davranışını anlamak için bu davranışları anlamak önemlidir. Daha fazla bilgi için Sağlama döngüleri: Sağlama nasıl çalışır? bölümündeki başlangıç ve artımlı bölümüne bakın.

Başlarken

Bu makalede açıklanan SCIM profilini destekleyen uygulamalar, Microsoft Entra uygulama galerisindeki "galeri dışı uygulama" özelliği kullanılarak Microsoft Entra ID bağlanabilir. Bağlandıktan sonra Microsoft Entra ID bir eşitleme işlemi çalıştırır. İşlem her 40 dakikada bir çalışır. İşlem, atanan kullanıcılar ve gruplar için uygulamanın SCIM uç noktasını sorgular ve bunları atama ayrıntılarına göre oluşturur veya değiştirir.

SCIM'yi destekleyen bir uygulamayı bağlamak için:

  1. En az bir Uygulama Yöneticisi olarak Microsoft Entra yönetici merkezine oturum açın.

  2. Entra ID>Enterprise apps adresine gidin.

  3. Galeriden eklenen uygulamalar da dahil olmak üzere tüm yapılandırılmış uygulamaların listesi gösterilir.

  4. + Yeni uygulama+ Kendi uygulamanızı> oluşturun'u seçin.

  5. Uygulamanız için bir ad girin, "galeride bulamadığınız diğer tüm uygulamaları tümleştirin" seçeneğini belirleyin ve uygulama nesnesi oluşturmak için Ekle'yi seçin. Yeni uygulama, kurumsal uygulamalar listesine eklenir ve uygulama yönetimi ekranında açılır.

    Aşağıdaki ekran görüntüsünde Microsoft Entra uygulama galerisi gösterilmektedir:

    Screenshot, Microsoft Entra uygulama galerisini gösterir.

  6. Uygulama yönetimi ekranında sol panelde Sağlama'yı seçin.

  7. + Yeni yapılandırmaseçin.

  8. Kiracı URL'si alanına uygulamanın SCIM uç noktasının URL'sini girin. Örnek: https://api.contoso.com/scim/

  9. SCIM uç noktası Microsoft Entra ID dışında bir verenden OAuth taşıyıcı belirteci gerektiriyorsa, gerekli OAuth taşıyıcı belirtecini isteğe bağlı Secret Belirteci alanına kopyalayın. Bu alan boş bırakılırsa, Microsoft Entra ID, her istekle birlikte kendi tarafından verilen bir OAuth taşıyıcı belirteci içerir. Kimlik sağlayıcısı olarak Microsoft Entra ID kullanan uygulamalar, Microsoft Entra ID tarafından verilen bu belirteci doğrulayabilir.

    Not

    Bu alanı boş bırakmanız ve Microsoft Entra ID tarafından oluşturulan bir belirteci kullanmanız önerilmemektedir. Bu seçenek öncelikli olarak test amacıyla kullanılabilir.

  10. Test Connection'ı seçerek Microsoft Entra ID'nin SCIM uç noktasına bağlanmayı denemesini sağlayın. Deneme başarısız olursa hata bilgileri görüntülenir.

    Not

    Test Connection, Microsoft Entra yapılandırmasında seçilen eşleşen özellik olarak rastgele bir GUID kullanarak var olmayan bir kullanıcı için SCIM uç noktasını sorgular. Beklenen doğru yanıt, boş bir SCIM ListResponse iletisi ile birlikte HTTP 200 OK'tir.

  11. Uygulamaya bağlanma girişimi başarılı olursa provizyon işini oluşturmak için Oluştur'u seçin.

  12. Yalnızca atanan kullanıcıları ve grupları eşitliyorsanız (önerilir), Kullanıcılar ve gruplar sekmesini seçin. Ardından, eşitlemek istediğiniz kullanıcıları veya grupları atayın. Bu adım, kapsam yalnızca atanan kullanıcıları ve grupları eşitlenecek şekilde ayarlandığında sağlamanın çalışması için gereklidir. Hiçbir kullanıcı veya grup atanmazsa, sağlanacak bir şey yoktur. Kullanıcı ve grup atama hakkında ayrıntılı yönergeler için bkz. Uygulamaya kullanıcı ve grup atama.

    Önemli

    Microsoft Entra sağlama hizmeti, yalnızca uygulamaya atanmış kullanıcıları ve grupları tedarik eder (kapsam, Yalnızca atanmış kullanıcılar ve grupları senkronize et olarak ayarlandığında). Herhangi bir kullanıcı veya grup atamazsanız, sağlama gerçekleşmez. Hazırlamaya başlamadan önce bu adımı tamamladığınızdan emin olun.

  13. Sol panelde öznitelik eşlemesi seçin. iki seçilebilir öznitelik eşleme kümesi vardır: biri kullanıcı nesneleri ve biri grup nesneleri için. Microsoft Entra ID uygulamanızla eşitlenen öznitelikleri gözden geçirmek için her birini seçin. Eşleştirme özellikleri olarak seçilen öznitelikler, güncelleştirme işlemleri için uygulamanızdaki kullanıcı ve gruplarla eşleştirmek için kullanılır. Değişiklikleri kaydetmek için Kaydet'i seçin.

    İsteğe bağlı olarak "gruplar" eşlemesini devre dışı bırakarak grup nesnelerinin eşitlenmesini devre dışı bırakabilirsiniz.

  14. Sol panelden İsteğe bağlı sağlama işlemi seçin. Sağlama kapsamındaki bir kullanıcıyı arayın ve onları isteğe bağlı olarak sağlayın. Sağlamayı test etmek istediğiniz diğer kullanıcılarla tekrarlayın.

  15. Yapılandırmanız tamamlandıktan sonra sol panelden Genel Bakış seçin.

  16. Özellikleröğesini seçin.

  17. Özellikleri düzenlemek için kalemi seçin. Bildirim e-postalarını etkinleştirin ve karantina e-postalarını almak için bir e-posta sağlayın. Yanlışlıkla silme önlemeyi etkinleştirin. Değişiklikleri kaydetmek için Uygula'ya tıklayın.

  18. Microsoft Entra sağlama hizmetini başlatmak için Başla sağlama seçin.

İlk döngü başladıktan sonra, ilerleme durumunu izlemek için sol paneldeki Sağlama günlükleri'ni seçebilirsiniz. Bu işlem, uygulamanızdaki sağlama hizmeti tarafından gerçekleştirilen tüm eylemleri gösterir. Microsoft Entra sağlama günlüklerini okuma hakkında daha fazla bilgi için bkz: Otomatik kullanıcı hesabı sağlama raporlama.

Not

İlk döngünün gerçekleştirilmesi, hizmet çalıştığı sürece yaklaşık 40 dakikada bir gerçekleşen sonraki eşitlemelerden daha uzun sürer.

Birden fazla kiracı tarafından kullanılan bir uygulama oluşturuyorsanız, uygulamayı Microsoft Entra uygulama galerisinde kullanılabilir hale getirin. Kuruluşların uygulamayı bulması ve sağlamayı yapılandırması kolaydır. Uygulamanızı Microsoft Entra galerisinde yayımlamak ve sağlamayı başkalarının kullanımına açmak kolaydır. Buradaki adımlara göz atın. Microsoft, uygulamanızı galeriyle entegre etmek, uç noktanızı test etmek ve müşteriler için ekleme dokümantasyonu yayınlayarak sizinle birlikte çalışır.

Uygulamanızı hızla eklemek ve müşterilerin sorunsuz bir dağıtım deneyimine sahip olması için denetim listesini kullanın. Bilgiler galeriye eklenirken sizden toplanır.

  • SCIM 2.0 kullanıcı ve grup uç noktasını destekleme (Yalnızca bir tane gereklidir, ancak her ikisi de önerilir)
  • Kiracı başına saniyede en az 25 isteği destekleyerek, kullanıcıların ve grupların gecikme olmadan sağlanmasını ve geri çekilmesini sağlamak (Gerekli)
  • Galeri ekleme sonrasında müşterilere yol göstermek için mühendislik ve destek kişileri oluşturma (Gerekli)
  • 3 Uygulamanız için süresi dolmayan test kimlik bilgileri (Gerekli)
  • OAuth 2.0 istemci kimlik bilgileri atamasını destekleme (Gerekli)
  • OIDC uygulamalarında en az 1 rol (özel veya varsayılan) tanımlanmış olmalıdır
  • Galeri ekleme sonrasında müşterileri desteklemek için bir mühendislik ve destek noktası oluşturma (Gerekli)
  • Şema bulma desteği (gerekli)
  • Tek bir PATCH ile birden çok grup üyeliğini güncelleştirme desteği
  • SCIM uç noktanızı genel olarak belgele

SCIM belirtimi, kimlik doğrulaması ve yetkilendirme için SCIM'e özgü bir şema tanımlamaz ve mevcut endüstri standartlarının kullanımına dayanır.

Yetkilendirme yöntemi Avantajlar Dezavantajlar Destek
Kullanıcı adı ve parola (Microsoft Entra ID tarafından önerilmez veya desteklenmez) Uygulanması kolay Güvensiz - Pa$$word önemli değil Yeni galeri veya galeri dışı uygulamalar için desteklenmez.
Uzun ömürlü taşıyıcı belirteci Uzun süreli belirteçler, bir kullanıcının mevcut olmasını gerektirmez. Sağlamayı ayarlarken yöneticilerin kullanması kolaydır. Uzun süreli belirteçleri e-posta gibi güvenli olmayan yöntemler kullanmadan bir yöneticiyle paylaşmak zor olabilir. Mevcut uygulamalar ve galeri dışı uygulamalar için desteklenir. Yeni uygulamalar için desteklenmez.
OAuth Yetkilendirme kodu verme Erişim belirteçlerinin ömrü parolalardan daha kısadır ve uzun süreli taşıyıcı belirteçlerin sahip olmadığı otomatik yenileme mekanizmasına sahiptir. İlk yetkilendirme sırasında gerçek bir kullanıcı mevcut olmalı ve sorumluluk düzeyi eklenmelidir. Bir kullanıcının mevcut olmasını gerektirir. Kullanıcı kuruluştan ayrılırsa belirteç geçersizdir ve yetkilendirmenin yeniden tamamlanması gerekir. Bazı mevcut uygulamalar için desteklenir. Yeni uygulamalar veya galeri dışı uygulamalar için desteklenmez.
OAuth 2.0 istemci kimlik bilgileri verme Erişim belirteçlerinin ömrü parolalardan daha kısadır ve uzun süreli taşıyıcı belirteçlerin sahip olmadığı otomatik yenileme mekanizmasına sahiptir. Hem yetkilendirme kodu verme hem de istemci kimlik bilgileri verme aynı tür erişim belirteci oluşturur, bu nedenle bu yöntemler arasında geçiş API'ye saydamdır. Sağlama otomatikleştirilebilir ve kullanıcı etkileşimi olmadan yeni belirteçler sessizce istenebilir. Yayımcılar, uygulama türünden bağımsız olarak istemci kimlik bilgilerini kullanarak SCIM işlerini yapılandırabilir. Her müşterinin SCIM API'sinde kimlik doğrulaması için kendi İstemci Kimliğini ve İstemci Gizli Anahtarını sağlaması gerekir. Galeri uygulamaları ve galeri dışı uygulamalar için desteklenir.

Not

OAuth Yetkilendirme kodu verme işlemi yakında kullanımdan kaldırılacaktır. Yeni bağlayıcılar OAuth Yetkilendirme kodu verme özelliğini desteklemez ve mevcut bağlayıcılar artık OAuth 2.0 istemci kimlik bilgileri verme özelliğini kullanmalıdır.

Not

Belirteç alanının Microsoft Entra sağlama yapılandırması özel uygulama kullanıcı arabiriminde boş bırakılması önerilmez. Oluşturulan belirteç öncelikli olarak test amacıyla kullanılabilir.

Daha fazla kimlik doğrulaması ve yetkilendirme yöntemi için UserVoice'ta bize bildirin.

OAuth 2.0 istemci kimlik bilgileri verme akışı

Sağlama hizmeti, OAuth 2.0 istemci kimlik bilgileri verme işlemini destekler. Uygulamanızı galeride yayımlama isteğinizi gönderdikten sonra ekibimiz aşağıdaki bilgileri toplamak için sizinle birlikte çalışacaktır:

  • Kiracı URL'si: Bu, hizmet sağlayıcınız tarafından sağlanan SCIM API uç nokta URL'sidir. Örneğin, https://example.test/scim gibi bir şey olabilir.
  • Belirteç Uç Noktası: Bu, OAuth2 Belirteci URL'sidir. Bu, sağlama hizmetinin bir erişim belirteci için istemci kimlik bilgilerini değiştirmek için kullanacağı uç noktadır. Örneğin, https://example.test/oauth2/token gibi bir şey olabilir.
  • İstemci Tanımlayıcısı: Bu, hizmet sağlayıcısı tarafından uygulamanıza atanan benzersiz bir tanımlayıcıdır.
  • Müşteri Sırrı: Bu, API üzerinde gerekli izinlere sahip olan uzun ömürlü bir tokendir. Erişim belirteci isteğinde bulunurken uygulamanızın kimliğini doğrulamak için kullanılır.

OAuth 2.0 istemci kimlik bilgileri yetkilendirme akışını kullanırken, bir sağlama örneği ayarlarken her müşterinin kendi İstemci Kimliğini ve Gizli Anahtarını göndermesi gereken bir modeli desteklemeniz gerekir. Tek bir uygulama genelinde istemci kimliği/İstemci Gizli Anahtarı çifti desteklenmez.

İstemci kimlik bilgilerini ayarlama

  1. Microsoft Entra yönetici merkezinde en az bir Uygulama Yöneticisi olarak oturum açın.
  2. Entra ID>Enterprise apps adresine gidin.
  3. Uygulamanızı seçin ve Sağlama'ya gidin.
  4. Yönetici Kimlik Bilgileri > Kimlik Doğrulama Yöntemi için OAuth2 İstemci Kimlik Bilgileri Verme'yi seçin.
  5. Kalan alanlar için bilgilerinizi girin:
    • Kiracı URL'si
    • Belirteç Uç Noktası
    • İstemci Tanımlayıcısı
    • istemci sırrı.
  6. Bağlantıyı Sına'ya tıklayın.

Daha fazla kimlik doğrulaması ve yetkilendirme yöntemi için UserVoice'ta bize bildirin.

Ortak tümleştirmemizin farkındalığını ve talebini artırmak için mevcut belgelerinizi güncelleştirmenizi ve pazarlama kanallarınızda tümleştirmeyi güçlendirmenizi öneririz. Başlatmayı desteklemek için aşağıdaki denetim listesini tamamlamanızı öneririz:

  • Satış ve müşteri destek ekiplerinizin farkında, hazır ve tümleştirme özellikleriyle konuşamaya hazır olduğundan emin olun. Takımlarınızı bilgilendirin ve yönlendirin, onlara SSS sağlayın ve satış malzemelerinizle entegrasyonu entegre edin.
  • Ortak tümleştirmeyi, avantajları ve nasıl kullanmaya başlandığını açıklayan bir blog gönderisi veya basın yayını oluşturma. Example: Imprivata ve Microsoft Entra Basın Bülteni
  • Tümleştirmeyi müşterilerinize tanıtmak için X, Facebook veya LinkedIn gibi sosyal medyanızdan yararlanın. Gönderinizi retweet yapabilmemiz için @Microsoft Entra ID eklemeyi unutmayın. Örnek: Imprivata X Post
  • Pazarlama sayfalarınızı/web sitenizi (tümleştirme sayfası, iş ortağı sayfası, fiyatlandırma sayfası vb.) ortak tümleştirmenin kullanılabilirliğini içerecek şekilde oluşturun veya güncelleştirin. Örnek: Pingboard tümleştirme Sayfası, Smartsheet tümleştirme sayfası, Monday.com fiyatlandırma sayfası
  • Müşterilerin nasıl başlayabileceğini gösteren bir yardım merkezi makalesi veya teknik belge oluşturun. Example: Envoy + Microsoft Entra integration.
  • Müşteri iletişiminiz (aylık bültenler, e-posta kampanyaları, ürün sürüm notları) aracılığıyla müşterileri yeni tümleştirme konusunda uyarın.

Sonraki adımlar