Azure AD ile bir SCıM uç noktası oluşturun ve Kullanıcı sağlamasını yapılandırınBuild a SCIM endpoint and configure user provisioning with Azure AD

Uygulama geliştiricisi olarak, uygulamanız ile Azure AD arasında kullanıcıları ve grupları otomatik olarak sağlamayı etkinleştirmek için etki alanları arası kimlik yönetimi (SCıM) Kullanıcı yönetimi API 'sini kullanabilirsiniz.As an application developer, you can use the System for Cross-Domain Identity Management (SCIM) user management API to enable automatic provisioning of users and groups between your application and Azure AD. Bu makalede, bir SCıM uç noktası oluşturma ve Azure AD sağlama hizmeti ile tümleştirme açıklanır.This article describes how to build a SCIM endpoint and integrate with the Azure AD provisioning service. SCıM belirtimi, sağlama için ortak bir Kullanıcı şeması sağlar.The SCIM specification provides a common user schema for provisioning. SAML veya OpenID Connect gibi Federasyon standartlarıyla birlikte kullanıldığında, SCıM yöneticilere erişim yönetimi için uçtan uca standartlara dayalı bir çözüm sunar.When used in conjunction with federation standards like SAML or OpenID Connect, SCIM gives administrators an end-to-end, standards-based solution for access management.

SCıM iki uç noktanın standartlaştırılmış bir tanımıdır: bir/Users uç noktası ve bir/Groups uç noktası.SCIM is a standardized definition of two endpoints: a /Users endpoint and a /Groups endpoint. Nesneleri oluşturmak, güncelleştirmek ve silmek için ortak REST fiillerini ve grup adı, Kullanıcı adı, adı, soyadı, soyadı ve e-posta gibi ortak özniteliklerin önceden tanımlanmış bir şemasını kullanır.It uses common REST verbs to create, update, and delete objects, and a pre-defined schema for common attributes like group name, username, first name, last name and email. Bir SCıM 2,0 REST API sunan uygulamalar, özel bir kullanıcı yönetimi API 'siyle çalışmayı azaltabilir veya ortadan kaldırabilir.Apps that offer a SCIM 2.0 REST API can reduce or eliminate the pain of working with a proprietary user management API. Örneğin, tüm uyumlu SCıM istemcileri yeni bir kullanıcı girişi oluşturmak için/Users uç noktasına bir JSON nesnesinin HTTP GÖNDERISINI nasıl yapılacağını bilir.For example, any compliant SCIM client knows how to make an HTTP POST of a JSON object to the /Users endpoint to create a new user entry. Aynı temel eylemler için biraz farklı bir API sağlamak yerine, SCıM standardına uyan uygulamalar, önceden var olan istemcilerden, araçlardan ve koddan hemen faydalanabilir.Instead of needing a slightly different API for the same basic actions, apps that conform to the SCIM standard can instantly take advantage of pre-existing clients, tools, and code.

SCıM ile Azure AD 'den bir uygulamaya sağlama

SCıM 2,0 (RFC 7642, 7643, 7644) ' de tanımlanan yönetim için standart Kullanıcı nesne şeması ve REST API 'leri, kimlik sağlayıcılarının ve uygulamaların birbirleriyle daha kolay tümleşmesine olanak tanır.The standard user object schema and rest APIs for management defined in SCIM 2.0 (RFC 7642, 7643, 7644) allow identity providers and apps to more easily integrate with each other. Bir SCıM uç noktası oluşturan uygulama geliştiricileri, özel iş yapmak zorunda kalmadan herhangi bir SCıM uyumlu istemcisiyle tümleştirilebilir.Application developers that build a SCIM endpoint can integrate with any SCIM-compliant client without having to do custom work.

Bir uygulamaya sağlamanın otomatikleştirilmesi, Azure AD SCıM istemcisiyle bir SCıM uç noktası oluşturulmasını ve tümleştirmesini gerektirir.Automating provisioning to an application requires building and integrating a SCIM endpoint with the Azure AD SCIM client. Uygulamanıza Kullanıcı ve grup sağlamaya başlamak için aşağıdaki adımları gerçekleştirin.Perform the following steps to start provisioning users and groups into your application.

SCıM uç noktasını Azure AD ile tümleştirme adımları

1. Adım: Kullanıcı ve grup şemanızı tasarlamaStep 1: Design your user and group schema

Her uygulama, Kullanıcı veya grup oluşturmak için farklı öznitelikler gerektirir.Every application requires different attributes to create a user or group. Uygulamanızın gerektirdiği nesneleri (Kullanıcı, Grup) ve öznitelikleri (ad, yönetici, iş unvanı vb.) tanımlayarak tümleştirmenizi başlatın.Start your integration by identifying the objects (users, groups) and attributes (name, manager, job title, etc.) that your application requires. SCıM standardı, kullanıcıları ve grupları yönetmek için bir şema tanımlar.The SCIM standard defines a schema for managing users and groups. Çekirdek Kullanıcı şeması yalnızca üç öznitelik gerektirir: kimlik (hizmet sağlayıcı tanımlı tanımlayıcı), externalId (istemci tanımlı tanımlayıcı) ve meta (hizmet sağlayıcı tarafından tutulan salt okuma meta verileri).The core user schema only requires three attributes: id (service provider defined identifier), externalId (client defined identifier), and meta (read-only metadata maintained by the service provider). Diğer tüm öznitelikler isteğe bağlıdır.All other attributes are optional. Çekirdek Kullanıcı şemasına ek olarak, SCıM standardı, uygulamanızın ihtiyaçlarını karşılamak için Kullanıcı şemasını genişletmek üzere bir kurumsal Kullanıcı uzantısı ve modeli tanımlar.In addition to the core user schema, the SCIM standard defines an enterprise user extension and a model for extending the user schema to meet your application’s needs. Örneğin, uygulamanız bir kullanıcının yöneticisini gerektiriyorsa, kullanıcının yöneticisini toplamak için kuruluş Kullanıcı şemasını ve kullanıcının e-postasını toplamak için çekirdek şemayı kullanabilirsiniz.If, for example, your application requires a user’s manager, you can use the enterprise user schema to collect the user’s manager and the core schema to collect the user’s email. Şemanızı tasarlamak için aşağıdaki adımları izleyin:To design your schema, follow the steps below:

  1. Uygulamanızın gerektirdiği öznitelikleri listeleyin.List the attributes your application requires. Gereksinimleriniz, kimlik doğrulaması için gereken özniteliklere (örn. loginName ve e-posta), kullanıcının yaşam döngüsünü (ör. durum/etkin) yönetmek için gereken öznitelikleri ve belirli uygulamanızın çalışması için gereken diğer öznitelikleri (ör. yönetici, etiket) için gerekli olan özniteliklere bölmek faydalı olabilir.It can be helpful to break down your requirements into the attributes needed for authentication (e.g. loginName and email), attributes needed to manage the lifecycle of the user (e.g. status / active), and other attributes needed for your particular application to work (e.g. manager, tag).
  2. Bu özniteliklerin zaten çekirdek Kullanıcı şemasında veya kurumsal Kullanıcı şemasında tanımlanmış olup olmadığını denetleyin.Check whether those attributes are already defined in the core user schema or enterprise user schema. İhtiyacınız olan ve çekirdek ya da kurumsal Kullanıcı şemaları kapsamında olmayan herhangi bir öznitelik varsa, Kullanıcı şemasına, ihtiyacınız olan öznitelikleri içeren bir uzantı tanımlamanız gerekir.If any attributes that you need and aren’t covered in the core or enterprise user schemas, you will need to define an extension to the user schema that covers the attributes you need. Aşağıdaki örnekte, bir kullanıcıya bir "Tag" sağlamaya izin vermek için kullanıcıya bir uzantı ekledik.In the example below, we’ve added an extension to the user to allow provisioning a “tag” on a user. Yalnızca çekirdek ve kurumsal Kullanıcı şemaları ile başlamak ve daha sonra ek özel şemalara genişletmek en iyisidir.It is best to start with just the core and enterprise user schemas and expand out to additional custom schemas later.
  3. SCıM özniteliklerini Azure AD 'deki Kullanıcı öznitelikleriyle eşleyin.Map the SCIM attributes to the user attributes in Azure AD. SCıM uç noktanıza tanımladığınız özniteliklerden birinin Azure AD Kullanıcı şemasında açık bir karşılığı yoksa, verilerin çoğu kiracının üzerinde Kullanıcı nesnesinde depolanmadığından iyi bir şansınız olur.If one of the attributes you have defined in your SCIM endpoint does not have a clear counterpart on the Azure AD user schema, there is a good chance the data isn’t stored on the user object at all on most tenants. Bu özniteliğin Kullanıcı oluşturmak için isteğe bağlı olup olmadığını göz önünde bulundurun.Consider whether this attribute can be optional for creating a user. Uygulamanızın çalışması için özniteliği önemliyse, kiracı yöneticisinin şemasını genişletmesine veya "Etiketler" özelliği için aşağıda gösterildiği gibi bir uzantı özniteliği kullanmasına kılavuzluk edin.If the attribute is critical for your application to work, guide the tenant administrator to extend their schema or use an extension attribute as shown below for the “tags” property.

Tablo 1: ihtiyacınız olan özniteliklerin anahatlarını belirlemeTable 1: Outline the attributes that you need

1. Adım: uygulamanızın gerektirdiği öznitelikleri belirlemeStep 1: Determine attributes your app requires 2. Adım: uygulama gereksinimlerini SCıM standardına eşlemeStep 2: Map app requirements to SCIM standard 3. Adım: SCıM özniteliklerini Azure AD öznitelikleriyle eşlemeStep 3: Map SCIM attributes to the Azure AD attributes
loginNameloginName userNameuserName userPrincipalNameuserPrincipalName
firstNamefirstName ad.name.givenName givenNamegivenName
lastNamelastName Name. lastNamename.lastName lastNamelastName
Iş postaworkMail E-postalar [tür EQ "iş"]. değerEmails[type eq “work”].value PostaMail
managermanager managermanager managermanager
etikettag urn: IETF: params: Scim: schemas: Extension: 2.0: Customexgerilim: Tagurn:ietf:params:scim:schemas:extension:2.0:CustomExtension:tag extensionAttribute1extensionAttribute1
durumstatus bkzactive ısofdeleted (hesaplanan değer kullanıcı üzerinde depolanmaz)isSoftDeleted (computed value not stored on user)

Yukarıda tanımlanan şema aşağıdaki JSON yükü kullanılarak temsil edilir.The schema defined above would be represented using the Json payload below. Uygulama için gerekli olan özniteliklere ek olarak, JSON temsili gereken "ID," "externalId" ve "meta" özniteliklerini içerir.Note that in addition to the attributes required for the application, the JSON representation includes the required “id,” “externalId,” and “meta” attributes.

{
     "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",
     "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:CustomAttribute: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/2819c223-7f76-453a-919d-413861904646"
   }

Tablo 2: varsayılan kullanıcı özniteliği eşlemeTable 2: Default user attribute mapping

Daha sonra, uygulamanızın gerektirdiği özniteliklerin Azure AD 'de bir özniteliğe ve SCıM RFC 'ye nasıl eşlendiğini anlamak için aşağıdaki tabloyu kullanabilirsiniz.You can then use the table below to understand how the attributes your application requires could map to an attribute in Azure AD and the SCIM RFC. Özniteliklerin Azure AD ile SCıM uç noktanız arasında nasıl eşlendiğini özelleştirebilirsiniz .You can customize how attributes are mapped between Azure AD and your SCIM endpoint. Hem kullanıcıları hem de grupları veya aşağıda gösterilen tüm öznitelikleri desteklememeniz gerekmez.Note that you don't need to support both users and groups or all the attributes shown below. Bunlar, Azure AD 'deki özniteliklerin genellikle SCıM protokolündeki özelliklerle nasıl eşlendiğine yönelik bir başvurudur.They are a reference for how attributes in Azure AD are often mapped to properties in the SCIM protocol.

Azure Active Directory KullanıcıAzure Active Directory user "urn: IETF: params: SCIM: schemas: Extension: Enterprise: 2.0: user""urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
IssoftdeletedIsSoftDeleted bkzactive
bölümdepartment urn: IETF: params: Scim: schemas: Extension: Enterprise: 2.0: User: Departmenturn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department
displayNamedisplayName displayNamedisplayName
ÇalışanemployeeId urn: IETF: params: Scim: schemas: Extension: Enterprise: 2.0: User: employeeNumberurn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber
Facsıle-TelephoneNumberFacsimile-TelephoneNumber phoneNumbers [tür EQ "Faks"]. değerphoneNumbers[type eq "fax"].value
givenNamegivenName ad.name.givenName
jobTitlejobTitle başlıktitle
postamail e-postalar [tür EQ "iş"]. değeremails[type eq "work"].value
mailNicknamemailNickname externalIDexternalId
managermanager urn: IETF: params: Scim: schemas: Extension: Enterprise: 2.0: User: Managerurn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager
mobilmobile phoneNumbers [tür EQ "mobil"]. değerphoneNumbers[type eq "mobile"].value
postalCodepostalCode adresler [tür EQ "iş"]. PostaKoduaddresses[type eq "work"].postalCode
Proxy-adreslerproxy-Addresses e-postalar [tür EQ "Other"]. Deeriemails[type eq "other"].Value
fiziksel-teslim-OfficeNamephysical-Delivery-OfficeName adresler [tür EQ "Other"]. Miyoraddresses[type eq "other"].Formatted
streetAddressstreetAddress adresler [tür EQ "Work"]. streetAddressaddresses[type eq "work"].streetAddress
surnamesurname Name. familyNamename.familyName
telefon numarasıtelephone-Number phoneNumbers [tür EQ "iş"]. değerphoneNumbers[type eq "work"].value
User-PrincipalNameuser-PrincipalName userNameuserName

Tablo 3: varsayılan Grup özniteliği eşlemeTable 3: Default group attribute mapping

Azure Active Directory grubuAzure Active Directory group urn: IETF: params: Scim: schemas: Core: 2.0: Grupurn:ietf:params:scim:schemas:core:2.0:Group
displayNamedisplayName displayNamedisplayName
postamail e-postalar [tür EQ "iş"]. değeremails[type eq "work"].value
mailNicknamemailNickname displayNamedisplayName
üyelermembers üyelermembers
UzantınınobjectId externalIDexternalId
proxyAddressesproxyAddresses e-postalar [tür EQ "Other"]. Deeriemails[type eq "other"].Value

SCıM RFC 'de tanımlanmış birkaç uç nokta vardır.There are several endpoints defined in the SCIM RFC. /User uç noktası ile çalışmaya başlayabilir ve ardından buradan genişletebilirsiniz.You can get started with the /User endpoint and then expand from there. /Schemas uç noktası özel öznitelikler kullanılırken veya şemanızın sıklıkla değiştiği durumlarda faydalıdır.The /Schemas endpoint is helpful when using custom attributes or if your schema changes frequently. İstemcinin en güncel şemayı otomatik olarak almasına olanak sağlar.It enables a client to retrieve the most up-to-date schema automatically. /Bulk uç noktası özellikle destekleyici gruplar olduğunda faydalıdır.The /Bulk endpoint is especially helpful when supporting groups. Aşağıdaki tabloda, SCıM standardında tanımlanan çeşitli uç noktalar açıklanmaktadır.The table below describes the various endpoints defined in the SCIM standard. /Schemas uç noktası özel öznitelikler kullanılırken veya şemanızın sıklıkla değiştiği durumlarda faydalıdır.The /Schemas endpoint is helpful when using custom attributes or if your schema changes frequently. Bir istemcinin en güncel şemayı otomatik olarak almasına olanak sağlar.It enables a client to retrieve the most up to date schema automatically. /Bulk uç noktası özellikle destekleyici gruplar olduğunda faydalıdır.The /Bulk endpoint is especially helpful when supporting groups. Aşağıdaki tabloda, SCıM standardında tanımlanan çeşitli uç noktalar açıklanmaktadır.The table below describes the various endpoints defined in the SCIM standard.

Tablo 4: geliştirmek istediğiniz uç noktaları belirlemeTable 4: Determine the endpoints that you would like to develop

BKZENDPOINT AÇIKLAMADESCRIPTION
/User/User Bir kullanıcı nesnesi üzerinde CRUD işlemleri gerçekleştirin.Perform CRUD operations on a user object.
/Group/Group Bir grup nesnesi üzerinde CRUD işlemleri gerçekleştirin.Perform CRUD operations on a group object.
/ServiceProviderConfig/ServiceProviderConfig Desteklenen SCıM standardının özelliklerine ilişkin ayrıntıları, örneğin desteklenen kaynakları ve kimlik doğrulama yöntemini sağlar.Provides details about the features of the SCIM standard that are supported, for example the resources that are supported and the authentication method.
/ResourceTypes/ResourceTypes Her kaynakla ilgili meta verileri belirtirSpecifies metadata about each resource
/Schemas/Schemas Her istemci ve hizmet sağlayıcı tarafından desteklenen öznitelik kümesi farklılık gösterebilir.The set of attributes supported by each client and service provider can vary. Bir hizmet sağlayıcı "ad", "başlık" ve "e-postalar" içerebilir, ancak başka bir hizmet sağlayıcı "ad", "başlık" ve "phoneNumbers" kullanır.While one service provider might include “name,” “title,” and “emails,” while another service provider uses “name,” “title,” and “phoneNumbers.” Şemalar uç noktası desteklenen özniteliklerin bulunmasına izin verir.The schemas endpoint allows for discovery of the attributes supported.
/Toplu/Bulk Toplu işlemler, tek bir işlemde büyük kaynak nesneleri koleksiyonu üzerinde işlemler gerçekleştirmenize olanak tanır (örneğin, büyük bir grup için üyelikleri güncelleştirme).Bulk operations allow you to perform operations on a large collection of resource objects in a single operation (e.g. update memberships for a large group).

2. Adım: Azure AD SCıM uygulamasını anlamaStep 2: Understand the Azure AD SCIM implementation

Önemli

Azure AD SCıM uygulamasının davranışı en son 18 Aralık 2018 tarihinde güncelleştirildi.The behavior of the Azure AD SCIM implementation was last updated on December 18, 2018. Nelerin değiştiği hakkında daha fazla bilgi için bkz. Azure AD Kullanıcı sağlama hizmeti 'Nin SCIM 2,0 protokol uyumluluğu.For information on what changed, see SCIM 2.0 protocol compliance of the Azure AD User Provisioning service.

SCıM 2,0 kullanıcı yönetim API 'sini destekleyen bir uygulama oluşturuyorsanız, bu bölümde Azure AD SCıM istemcisinin nasıl uygulandığı ayrıntılı bilgiler açıklanmaktadır.If you're building an application that supports a SCIM 2.0 user management API, this section describes in detail how the Azure AD SCIM client is implemented. Ayrıca, SCıM protokol isteği işleme ve yanıtlarınızı nasıl modellebileceğiniz gösterilmektedir.It also shows how to model your SCIM protocol request handling and responses. SCıM uç noktanızı uygulandıktan sonra, önceki bölümde açıklanan yordamı izleyerek test edebilirsiniz.Once you've implemented your SCIM endpoint, you can test it by following the procedure described in the previous section.

SCIM 2,0 protokol belirtimiiçinde, uygulamanız şu gereksinimleri karşılamalıdır:Within the SCIM 2.0 protocol specification, your application must meet these requirements:

  • , SCıM protokolünün 3,3bölümünde olduğu gibi, kullanıcıların ve isteğe bağlı olarak grupların oluşturulmasını destekler.Supports creating users, and optionally also groups, as per section 3.3 of the SCIM protocol.
  • , SCıM protokolünün Bölüm 3.5.2göre, yama istekleri olan kullanıcı veya grupların değiştirilmesini destekler.Supports modifying users or groups with PATCH requests, as per section 3.5.2 of the SCIM protocol.
  • , SCıM protokolünün bölüm başına 3.4.1göre daha önce oluşturulmuş bir kullanıcı veya grup için bilinen bir kaynağı almayı destekler.Supports retrieving a known resource for a user or group created earlier, as per section 3.4.1 of the SCIM protocol.
  • , SCıM protokolününbölüm başına 3.4.2 göre Kullanıcı veya grupların sorgulanmasını destekler.Supports querying users or groups, as per section 3.4.2 of the SCIM protocol. Varsayılan olarak, kullanıcılar, id ve tarafından sorgulanır ve grupları tarafından username externalid sorgulanır displayName .By default, users are retrieved by their id and queried by their username and externalid, and groups are queried by displayName.
  • , SCıM protokolünün Bölüm 3.4.2 göre, kullanıcının KIMLIĞE ve yöneticiye göre sorgulanmasını destekler.Supports querying user by ID and by manager, as per section 3.4.2 of the SCIM protocol.
  • , SCıM protokolünün Bölüm 3.4.2 göre grupların KIMLIĞE ve üyeye göre sorgulanmasını destekler.Supports querying groups by ID and by member, as per section 3.4.2 of the SCIM protocol.
  • Azure AD 'nin uygulamanıza kimlik doğrulaması ve yetkilendirmesi için tek bir taşıyıcı belirtecini kabul eder.Accepts a single bearer token for authentication and authorization of Azure AD to your application.

Azure AD ile uyumluluğu sağlamak için bir SCıM uç noktası uygularken bu genel yönergeleri izleyin:Follow these general guidelines when implementing a SCIM endpoint to ensure compatibility with Azure AD:

  • idTüm kaynaklar için gerekli bir özelliktir.id is a required property for all the resources. Kaynak döndüren her yanıt, sıfır üye hariç olmak üzere her bir kaynağın bu özelliğe sahip olduğundan emin olmalıdır ListResponse .Every response that returns a resource should ensure each resource has this property, except for ListResponse with zero members.
  • Bir sorgu/filtre isteğine yanıt her zaman bir olmalıdır ListResponse .Response to a query/filter request should always be a ListResponse.
  • Gruplar isteğe bağlıdır, ancak yalnızca SCıM uygulamasının yama isteklerini desteklemesi durumunda desteklenir.Groups are optional, but only supported if the SCIM implementation supports PATCH requests.
  • Bu, tüm kaynağı yama yanıtına dahil etmek için gerekli değildir.It isn't necessary to include the entire resource in the PATCH response.
  • Microsoft Azure AD yalnızca aşağıdaki işleçleri kullanır:Microsoft Azure AD only uses the following operators:
    • eq
    • and
  • İçinde tanımlandığı gibi, belirli bir düzeltme eki işlem değerlerinde SCıM içindeki yapısal öğelerde büyük/küçük harfe duyarlı bir eşleşme gerektirmez op https://tools.ietf.org/html/rfc7644#section-3.5.2 .Don't require a case-sensitive match on structural elements in SCIM, in particular PATCH op operation values, as defined in https://tools.ietf.org/html/rfc7644#section-3.5.2. Azure AD, ' op ' değerlerini, ve olarak Add yayar Replace Remove .Azure AD emits the values of 'op' as Add, Replace, and Remove.
  • Microsoft Azure AD bitiş noktasının ve kimlik bilgilerinin geçerli olduğundan emin olmak için rastgele bir Kullanıcı ve grup getirme isteklerinin olmasını sağlar.Microsoft Azure AD makes requests to fetch a random user and group to ensure that the endpoint and the credentials are valid. Ayrıca, Azure Portal Test bağlantı akışının bir parçası olarak da yapılır.It's also done as a part of Test Connection flow in the Azure portal.
  • Kaynakların sorgulanabileceği öznitelik, Azure Portaluygulamada eşleşen bir öznitelik olarak ayarlanmalıdır.The attribute that the resources can be queried on should be set as a matching attribute on the application in the Azure portal. Daha fazla bilgi için bkz. Kullanıcı hazırlama öznitelik eşlemelerini özelleştirmeFor more information, see Customizing User Provisioning Attribute Mappings

Kullanıcı hazırlama ve sağlamayı kaldırmaUser provisioning and deprovisioning

Aşağıdaki çizim Azure Active Directory, uygulamanızın kimlik deposundaki bir kullanıcının yaşam döngüsünü yönetmek üzere bir SCıM hizmetine gönderdiği iletileri gösterir.The following illustration shows the messages that Azure Active Directory sends to a SCIM service to manage the lifecycle of a user in your application's identity store.

Kullanıcı hazırlama ve sağlamayı kaldırma sırasını gösterirShows the user provisioning and deprovisioning sequence
Kullanıcı hazırlama ve sağlamayı kaldırma sırasıUser provisioning and deprovisioning sequence

Grup sağlama ve sağlamayı kaldırmaGroup provisioning and deprovisioning

Grup sağlama ve sağlamayı kaldırma isteğe bağlıdır.Group provisioning and deprovisioning are optional. Uygulandığında ve etkinleştirildiğinde aşağıdaki çizimde, Azure AD 'nin uygulamanızın kimlik deposundaki bir grubun yaşam döngüsünü yönetmek için bir SCıM hizmetine gönderdiği iletiler gösterilmektedir.When implemented and enabled, the following illustration shows the messages that Azure AD sends to a SCIM service to manage the lifecycle of a group in your application's identity store. Bu iletiler kullanıcılar hakkındaki iletilerden iki şekilde farklılık gösterir:Those messages differ from the messages about users in two ways:

  • Grupları alma istekleri, Üyeler özniteliğinin, isteğe yanıt olarak belirtilen herhangi bir kaynaktan dışlanacağını belirtir.Requests to retrieve groups specify that the members attribute is to be excluded from any resource provided in response to the request.
  • Bir başvuru özniteliğinin belirli bir değere sahip olup olmadığını belirleme istekleri, Üyeler özniteliği hakkında isteklerdir.Requests to determine whether a reference attribute has a certain value are requests about the members attribute.

Grup sağlama ve sağlamayı kaldırma sırasını gösterirShows the group provisioning and deprovisioning sequence
Grup sağlama ve sağlamayı kaldırma sırasıGroup provisioning and deprovisioning sequence

SCıM protokol istekleri ve yanıtlarıSCIM protocol requests and responses

Bu bölümde, Azure AD SCıM istemcisi tarafından yayılan örnek SCıM istekleri ve örnek beklenen yanıtlar sağlanmaktadır.This section provides example SCIM requests emitted by the Azure AD SCIM client and example expected responses. En iyi sonuçlar için, bu istekleri bu biçimde işleyecek ve beklenen yanıtları yaymak üzere uygulamanızı kodmalısınız.For best results, you should code your app to handle these requests in this format and emit the expected responses.

Önemli

Azure AD Kullanıcı sağlama hizmeti 'nin aşağıda açıklanan işlemleri nasıl ve ne zaman yaydığı hakkında bilgi edinmek için bkz. sağlama döngüleri: başlangıç ve artımlı , sağlama nasıl?.To understand how and when the Azure AD user provisioning service emits the operations described below, see the section Provisioning cycles: Initial and incremental in How provisioning works.

Kullanıcı IşlemleriUser Operations

Grup IşlemleriGroup Operations

Kullanıcı IşlemleriUser Operations

  • Kullanıcılar veya öznitelikleri tarafından sorgulanabilir userName email[type eq "work"] .Users can be queried by userName or email[type eq "work"] attributes.

Kullanıcı OluşturCreate User

İstekRequest

POST/UsersPOST /Users

{
    "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_ab6490ee-1e48-479e-a20b-2d77186b5dd1",
    "active": true,
    "emails": [{
        "primary": true,
        "type": "work",
        "value": "Test_User_fd0ea19b-0777-472c-9f96-4f70d2226f2e@testuser.com"
    }],
    "meta": {
        "resourceType": "User"
    },
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName"
    },
    "roles": []
}
YanıtResponse

HTTP/1.1 201 oluşturulduHTTP/1.1 201 Created

{
    "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_ab6490ee-1e48-479e-a20b-2d77186b5dd1",
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName",
    },
    "active": true,
    "emails": [{
        "value": "Test_User_fd0ea19b-0777-472c-9f96-4f70d2226f2e@testuser.com",
        "type": "work",
        "primary": true
    }]
}

Get UserGet User

İstekRequest

/Users/5d48a0a8e9f04aa38008 alGET /Users/5d48a0a8e9f04aa38008

Yanıt (Kullanıcı bulundu)Response (User found)

HTTP/1.1 200 TAMAMHTTP/1.1 200 OK

{
    "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_feed3ace-693c-4e5a-82e2-694be1b39934",
    "name": {
        "formatted": "givenName familyName",
        "familyName": "familyName",
        "givenName": "givenName",
    },
    "active": true,
    "emails": [{
        "value": "Test_User_22370c1a-9012-42b2-bf64-86099c2a1c22@testuser.com",
        "type": "work",
        "primary": true
    }]
}
İstekRequest

/Users/5171a35d82074e068ce2 alGET /Users/5171a35d82074e068ce2

Yanıt (Kullanıcı bulunamadı.Response (User not found. Ayrıntı gerekli değildir, yalnızca durum olur.)Note that the detail is not required, only status.)
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:Error"
    ],
    "status": "404",
    "detail": "Resource 23B51B0E5D7AE9110A49411D@7cca31655d49f3640a494224 not found"
}

Sorguya göre Kullanıcı alGet User by query

İstekRequest

GET/Users? Filter = userName EQ "Test_User_dfeef4c5-5681 -4387-B016-bdf221e82081"GET /Users?filter=userName eq "Test_User_dfeef4c5-5681-4387-b016-bdf221e82081"

YanıtıylaResponse

HTTP/1.1 200 TAMAMHTTP/1.1 200 OK

{
    "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_dfeef4c5-5681-4387-b016-bdf221e82081",
        "name": {
            "familyName": "familyName",
            "givenName": "givenName"
        },
        "active": true,
        "emails": [{
            "value": "Test_User_91b67701-697b-46de-b864-bd0bbe4f99c1@testuser.com",
            "type": "work",
            "primary": true
        }]
    }],
    "startIndex": 1,
    "itemsPerPage": 20
}

Sorguya göre Kullanıcı al-sıfır sonuçlarıGet User by query - Zero results

İstekRequest

/Users al? Filter = userName EQ "varolmayan kullanıcı"GET /Users?filter=userName eq "non-existent user"

YanıtıylaResponse

HTTP/1.1 200 TAMAMHTTP/1.1 200 OK

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

Kullanıcı güncelleştirme [çok değerli özellikler]Update User [Multi-valued properties]

İstekRequest

PATCH/Users/6764549bef60420686bc HTTP/1.1PATCH /Users/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ıylaResponse

HTTP/1.1 200 TAMAMHTTP/1.1 200 OK

{
    "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_fbb9dda4-fcde-4f98-a68b-6c5599e17c27",
    "name": {
        "formatted": "givenName updatedFamilyName",
        "familyName": "updatedFamilyName",
        "givenName": "givenName"
    },
    "active": true,
    "emails": [{
        "value": "updatedEmail@microsoft.com",
        "type": "work",
        "primary": true
    }]
}

Kullanıcı güncelleştirme [tek değerli özellikler]Update User [Single-valued properties]

İstekRequest

PATCH/Users/5171a35d82074e068ce2 HTTP/1.1PATCH /Users/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ıylaResponse

HTTP/1.1 200 TAMAMHTTP/1.1 200 OK

{
    "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_49dc1090-aada-4657-8434-4995c25a00f7@testuser.com",
        "type": "work",
        "primary": true
    }]
}

Disable UserDisable User

İstekRequest

PATCH/Users/5171a35d82074e068ce2 HTTP/1.1PATCH /Users/5171a35d82074e068ce2 HTTP/1.1

{
    "Operations": [
        {
            "op": "Replace",
            "path": "active",
            "value": false
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:PatchOp"
    ]
}
YanıtıylaResponse
{
    "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"
    }
}

Kullanıcıyı SilmeDelete User

İstekRequest

/Users/5171a35d82074e068ce2 HTTP/1.1 SILMEDELETE /Users/5171a35d82074e068ce2 HTTP/1.1

YanıtıylaResponse

HTTP/1.1 204 Içerik yokHTTP/1.1 204 No Content

Grup IşlemleriGroup Operations

  • Gruplar her zaman bir boş üye listesiyle oluşturulur.Groups shall always be created with an empty members list.
  • Gruplar, displayName özniteliğiyle sorgulanabilir.Groups can be queried by the displayName attribute.
  • Grup düzeltme eki isteğine güncelleştirme, yanıtta bir HTTP 204 içeriği getirmelidir.Update to the group PATCH request should yield an HTTP 204 No Content in the response. Tüm üyelerin listesini içeren bir gövde döndürülmesi önerilmez.Returning a body with a list of all the members isn't advisable.
  • Grubun tüm üyelerini döndürmeyi desteklemek gerekli değildir.It isn't necessary to support returning all the members of the group.

Grup OluşturmaCreate Group

İstekRequest

Son/gruplar HTTP/1.1POST /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ıylaResponse

HTTP/1.1 201 oluşturulduHTTP/1.1 201 Created

{
    "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": []
}

Get GroupGet Group

İstekRequest

/Groups/40734ae655284ad3abcc? excludedAttributes = Members HTTP/1.1 alınGET /Groups/40734ae655284ad3abcc?excludedAttributes=members HTTP/1.1

YanıtıylaResponse

HTTP/1.1 200 TAMAMHTTP/1.1 200 OK

{
    "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",
}

Grubu displayName 'e göre alGet Group by displayName

İstekRequest

/Groups al? excludedAttributes = Members&Filter = displayName EQ "displayName" HTTP/1.1GET /Groups?excludedAttributes=members&filter=displayName eq "displayName" HTTP/1.1

YanıtıylaResponse

HTTP/1.1 200 TAMAMHTTP/1.1 200 OK

{
    "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
}

Güncelleştirme grubu [Üye olmayan öznitelikler]Update Group [Non-member attributes]

İstekRequest

PATCH/Groups/fa2ce26709934589afc5 HTTP/1.1PATCH /Groups/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ıylaResponse

HTTP/1.1 204 Içerik yokHTTP/1.1 204 No Content

Güncelleştirme grubu [Üye Ekleme]Update Group [Add Members]

İstekRequest

PATCH/Groups/a99962b9f99d4c4fac67 HTTP/1.1PATCH /Groups/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ıylaResponse

HTTP/1.1 204 Içerik yokHTTP/1.1 204 No Content

Güncelleştirme grubu [üyeleri kaldır]Update Group [Remove Members]

İstekRequest

PATCH/Groups/a99962b9f99d4c4fac67 HTTP/1.1PATCH /Groups/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ıylaResponse

HTTP/1.1 204 Içerik yokHTTP/1.1 204 No Content

Grubu SilmeDelete Group

İstekRequest

/Groups/cdb1ce18f65944079d37 HTTP/1.1 SILMEDELETE /Groups/cdb1ce18f65944079d37 HTTP/1.1

YanıtıylaResponse

HTTP/1.1 204 Içerik yokHTTP/1.1 204 No Content

Güvenlik gereksinimleriSecurity requirements

TLS protokol sürümleriTLS Protocol Versions

Kabul edilebilir tek TLS protokol sürümleri, TLS 1,2 ve TLS 1,3 ' dir.The only acceptable TLS protocol versions are TLS 1.2 and TLS 1.3. Başka TLS sürümüne izin verilmez.No other versions of TLS are permitted. SSL sürümüne izin verilmez.No version of SSL is permitted.

  • RSA anahtarları en az 2.048 bit olmalıdır.RSA keys must be at least 2,048 bits.
  • ECC anahtarları, onaylanmış bir eliptik eğri kullanılarak oluşturulan en az 256 bit olmalıdırECC keys must be at least 256 bits, generated using an approved elliptic curve

Anahtar uzunluklarıKey Lengths

Tüm hizmetlerin, yeterli uzunlukta şifreleme anahtarları kullanılarak oluşturulan X. 509.440 sertifikalarını kullanması gerekir, anlamı:All services must use X.509 certificates generated using cryptographic keys of sufficient length, meaning:

Şifre paketleriCipher Suites

Tüm hizmetlerin aşağıdaki şifre paketlerini kullanmak için aşağıda belirtilen kesin sırada yapılandırılması gerekir.All services must be configured to use the following cipher suites, in the exact order specified below. Yalnızca bir RSA sertifikanız varsa, yüklü ECDSA şifre paketlerinin herhangi bir etkisi olmadığını unutmayın.Note that if you only have an RSA certificate, installed the ECDSA cipher suites do not have any effect.

TLS 1,2 şifre paketleri minimum çubuğu:TLS 1.2 Cipher Suites minimum bar:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

IP aralıklarıIP Ranges

Azure AD Provisionong hizmeti şu anda aşağıdaki IP aralıkları altında çalışır.The Azure AD Provisionong service currently operates under the following IP ranges.

13.86.239.205; 52.188.178.195; 13.86.61.156; 40.67.254.206; 51.105.237.71; 20.44.38.166; 40.81.88.68; 52.184.94.250; 20.43.180.59; 20.193.16.105; 20.40.167.232; 13.86.3.57; 52.188.72.113; 13.88.140.233; 52.142.121.156; 51.124.0.213; 40.81.92.36; 20.44.39.175; 20.189.114.130; 20.44.193.163; 20.193.23.17; 20.40.173.237; 13.86.138.128; 52.142.29.23; 13.86.2.238; 40.127.246.167; 51.136.72.4; 20.44.39.244; 40.81.92.186; 20.189.114.131; 20.44.193.210; 20.193.2.21; 20.40.174.46; 13.86.219.18; 40.71.13.10; 20.44.16.38; 13.89.174.16; 13.69.66.182; 13.69.229.118; 104.211.147.176; 40.78.195.176; 13.67.9.240; 13.75.38.48; 13.70.73.48; 13.77.52.176;13.86.239.205; 52.188.178.195; 13.86.61.156; 40.67.254.206; 51.105.237.71; 20.44.38.166; 40.81.88.68; 52.184.94.250; 20.43.180.59; 20.193.16.105; 20.40.167.232; 13.86.3.57; 52.188.72.113; 13.88.140.233; 52.142.121.156; 51.124.0.213; 40.81.92.36; 20.44.39.175; 20.189.114.130; 20.44.193.163; 20.193.23.17; 20.40.173.237; 13.86.138.128; 52.142.29.23; 13.86.2.238; 40.127.246.167; 51.136.72.4; 20.44.39.244; 40.81.92.186; 20.189.114.131; 20.44.193.210; 20.193.2.21; 20.40.174.46; 13.86.219.18; 40.71.13.10; 20.44.16.38; 13.89.174.16; 13.69.66.182; 13.69.229.118; 104.211.147.176; 40.78.195.176; 13.67.9.240; 13.75.38.48; 13.70.73.48; 13.77.52.176;

3. Adım: SCıM uç noktası oluşturmaStep 3: Build a SCIM endpoint

Şemanızı tasarladıktan ve Azure AD SCıM uygulamasını anladığınıza göre, SCıM uç noktanızı geliştirmeye başlamanızı sağlayabilirsiniz.Now that you have designed your schema and understood the Azure AD SCIM implementation, you can get started developing your SCIM endpoint. Sıfırdan başlamak ve uygulamayı tamamen kendi kendinize oluşturmak yerine, SCıM topluluğu tarafından yayımlanan bir dizi açık kaynaklı SCıM kitaplıklarını kullanabilirsiniz.Rather than starting from scratch and building the implementation completely on your own, you can rely on a number of open source SCIM libraries published by the SCIM community.

Azure AD sağlama ekibi tarafından yayımlanan açık kaynaklı .NET Core başvuru kodu , geliştirmeye başlayabilmenizi sağlayan bir kaynaktır.The open source .NET Core reference code published by the Azure AD provisioning team is one such resource that can jump start your development. SCıM uç noktanızı oluşturduktan sonra test etmek isteyeceksiniz. Başvuru kodunun bir parçası olarak verilen Postman testleri koleksiyonunu kullanabilir veya yukarıdabelirtilen örnek istekler/yanıtlar üzerinden çalıştırabilirsiniz.Once you have built your SCIM endpoint, you will want to test it out. You can use the collection of postman tests provided as part of the reference code or run through the sample requests / responses provided above.

Not

Başvuru kodu, SCıM uç noktanızı oluşturmaya başlamanıza ve "olduğu gıbı" sağlanmaya yardımcı olmak için tasarlanmıştır.The reference code is intended to help you get started building your SCIM endpoint and is provided "AS IS." Topluluk katkılarına, kodu oluşturmaya ve tutmaya yardımcı olmak için hoş geldiniz.Contributions from the community are welcome to help build and maintain the code.

Çözüm, Microsoft. SCIM ve _Microsoft. SCIM. webhostsample_olmak üzere iki projeden oluşur.The solution is composed of two projects, Microsoft.SCIM and Microsoft.SCIM.WebHostSample.

Microsoft. SCIM PROJESI, SCIM belirtimine uyan Web hizmetinin bileşenlerini tanımlayan kitaplıktır.The Microsoft.SCIM project is the library that defines the components of the web service that conforms to the SCIM specification. _Microsoft. SCıM. IProvider_arabirimini bildirir, istekler, bir kimlik deposunda çalışacak şekilde programlanan, sağlayıcının yöntemlerine yapılan çağrılara çevrilir.It declares the interface Microsoft.SCIM.IProvider, requests are translated into calls to the provider’s methods, which would be programmed to operate on an identity store.

Döküm: sağlayıcının yöntemlerine yapılan çağrılara çevrilen bir istek

Microsoft. SCıM. WebHostSample projesi, boş şablonu temel alan bir Visual Studio ASP.NET Core Web uygulamasıdır.The Microsoft.SCIM.WebHostSample project is a Visual Studio ASP.NET Core Web Application, based on the Empty template. Bu, örnek kodun kapsayıcılar içinde veya Internet Information Services içinde barındırılan tek başına olarak dağıtılmasını sağlar.This allows the sample code to be deployed as standalone, hosted in containers or within Internet Information Services. Ayrıca, sınıfları bir örnek kimlik deposu olarak bellekte tutarak Microsoft. SCıM. ıprovider arabirimini de uygular.It also implements the Microsoft.SCIM.IProvider interface keeping classes in memory as a sample identity store.

    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 bir SCıM uç noktası oluşturmaBuilding a custom SCIM endpoint

SCıM hizmeti, kök sertifika yetkilisinin aşağıdaki adlardan biri olduğu bir HTTP adresi ve sunucu kimlik doğrulama sertifikasına sahip olmalıdır:The SCIM service must have an HTTP address and server authentication certificate of which the root certification authority is one of the following names:

  • CNNICCNNIC
  • ComodoComodo
  • CyberTrustCyberTrust
  • DigiCertDigiCert
  • Coğrafi güvenGeoTrust
  • GlobalSignGlobalSign
  • Go DaddyGo Daddy
  • VeriSignVeriSign
  • WoSignWoSign

.NET Core SDK, geliştirme sırasında kullanılabilecek bir HTTPS geliştirme sertifikası içerir, sertifika ilk çalıştırma deneyiminin bir parçası olarak yüklenir.The .NET Core SDK includes an HTTPS development certificate that can be used during development, the certificate is installed as part of the first-run experience. ASP.NET Core Web uygulamasını nasıl çalıştırdığınıza bağlı olarak, farklı bir bağlantı noktasını dinler:Depending on how you run the ASP.NET Core Web Application it will listen to a different port:

  • Microsoft. SCıM. WebHostSample:https://localhost:5001Microsoft.SCIM.WebHostSample: https://localhost:5001
  • IIS Express:https://localhost:44359/IIS Express: https://localhost:44359/

ASP.NET Core ' de HTTPS hakkında daha fazla bilgi için aşağıdaki bağlantıyı kullanın: ASP.NET Core https 'Yi zorlaFor more information on HTTPS in ASP.NET Core use the following link: Enforce HTTPS in ASP.NET Core

Uç nokta kimlik doğrulamasını işlemeHandling endpoint authentication

Azure Active Directory istekleri OAuth 2,0 taşıyıcı belirtecini içerir.Requests from Azure Active Directory include an OAuth 2.0 bearer token. İsteği alan herhangi bir hizmet, beklenen Azure Active Directory kiracının Azure Active Directory olarak veren tarafından doğrulanmalıdır.Any service receiving the request should authenticate the issuer as being Azure Active Directory for the expected Azure Active Directory tenant.

Belirteçte veren, gibi bir ISS talebi tarafından tanımlanır "iss":"https://sts.windows.net/cbb1a5ac-f33b-45fa-9bf5-f37db0fed422/" .In the token, the issuer is identified by an iss claim, like "iss":"https://sts.windows.net/cbb1a5ac-f33b-45fa-9bf5-f37db0fed422/". Bu örnekte, talep değerinin temel adresi https://sts.windows.net veren olarak Azure Active Directory tanımlar, göreli adres segmenti, cbb1a5ac-f33b-45fa-9BF5-f37db0fed422, belirtecin verildiği Azure Active Directory kiracının benzersiz tanımlayıcısıdır.In this example, the base address of the claim value, https://sts.windows.net, identifies Azure Active Directory as the issuer, while the relative address segment, cbb1a5ac-f33b-45fa-9bf5-f37db0fed422, is a unique identifier of the Azure Active Directory tenant for which the token was issued.

Belirtecin hedef kitlesi, galerideki uygulamanın uygulama şablonu KIMLIĞI olacaktır, tek bir kiracıya kayıtlı uygulamaların her biri iss SCIM istekleriyle aynı talebi alabilir.The audience for the token will be the application template ID for the application in the gallery, each of the applications registered in a single tenant may receive the same iss claim with SCIM requests. Tüm özel uygulamalar için uygulama şablonu KIMLIĞI, 8adf8e6e-67b2-4cf2-a259-e3dc5476c621' dir.The application template ID for all custom apps is 8adf8e6e-67b2-4cf2-a259-e3dc5476c621. Azure AD sağlama hizmeti tarafından oluşturulan belirteç yalnızca test için kullanılmalıdır.The token generated by the Azure AD provisioning service should only be used for testing. Üretim ortamlarında kullanılmamalıdır.It should not be used in production environments.

Örnek kodda, istekler Microsoft. AspNetCore. Authentication. Jwttaşıyıcı paketi kullanılarak doğrulanır.In the sample code, requests are authenticated using the Microsoft.AspNetCore.Authentication.JwtBearer package. Aşağıdaki kod, belirli bir kiracı için Azure Active Directory tarafından verilen taşıyıcı belirteci kullanılarak hizmet uç noktalarından herhangi birine yönelik isteklerin kimliklerinin doğrulanmasını zorunlu kılar:The following code enforces that requests to any of the service’s endpoints are authenticated using the bearer token issued by Azure Active Directory for a specified tenant:

        public void ConfigureServices(IServiceCollection services)
        {
            if (_env.IsDevelopment())
            {
                ...
            }
            else
            {
                services.AddAuthentication(options =>
                {
                    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                })
                    .AddJwtBearer(options =>
                    {
                        options.Authority = " https://sts.windows.net/cbb1a5ac-f33b-45fa-9bf5-f37db0fed422/";
                        options.Audience = "8adf8e6e-67b2-4cf2-a259-e3dc5476c621";
                        ...
                    });
            }
            ...
        }

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

Ayrıca, belirtilen Postman testlerinin kullanılması ve localhost kullanarak yerel hata ayıklama gerçekleştirmek için bir taşıyıcı belirteci de gereklidir.A bearer token is also required to use of the provided postman tests and perform local debugging using localhost. Örnek kod, geliştirme aşamasında kimlik doğrulama seçeneklerini değiştirmek için ASP.NET Core ortamları kullanır ve kendinden imzalı bir belirteç kullanmayı etkinleştirir.The sample code uses ASP.NET Core environments to change the authentication options during development stage and enable the use a self-signed token.

ASP.NET Core birden çok ortam hakkında daha fazla bilgi için aşağıdaki bağlantıyı kullanın: ASP.NET Core birden çok ortam kullanınFor more information on multiple environments in ASP.NET Core use the following link: Use multiple environments in ASP.NET Core

Aşağıdaki kod, hizmetin uç noktalarından herhangi birine yönelik isteklerin kimliklerinin, özel anahtarla imzalanmış bir taşıyıcı belirteci kullanılarak doğrulanmasını sağlar:The following code enforces that requests to any of the service’s endpoints are authenticated using a bearer token signed with a custom key:

        public void ConfigureServices(IServiceCollection services)
        {
            if (_env.IsDevelopment())
            {
                services.AddAuthentication(options =>
                {
                    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    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ılmış parametrelerle eşleşen bir belirteç oluşturmaktan sorumludur:Send a GET request to the Token controller to get a valid bearer token, the method GenerateJSONWebToken is responsible to create a token matching the parameters configured for development:

        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ı hazırlama ve sağlamayı kaldırma işlemlerini işlemeHandling provisioning and deprovisioning of users

Örnek 1. Hizmeti eşleşen bir kullanıcı için sorgulamaExample 1. Query the service for a matching user

Azure Active Directory, Azure AD 'deki bir kullanıcının Mailrumuz özniteliği ile eşleşen bir externalId öznitelik değeri olan bir kullanıcıya yönelik hizmeti sorgular.Azure Active Directory queries the service for a user with an externalId attribute value matching the mailNickname attribute value of a user in Azure AD. Sorgu, bu örnek gibi bir Köprü Metni Aktarım Protokolü (HTTP) isteği olarak ifade edilir. burada jbaşak, Azure Active Directory bir kullanıcının Mailtakma adı örneğidir.The query is expressed as a Hypertext Transfer Protocol (HTTP) request such as this example, wherein jyoung is a sample of a mailNickname of a user in Azure Active Directory.

Not

Bu yalnızca bir örnektir.This is an example only. Tüm kullanıcıların bir Mailrumuz özniteliği olmaz ve bir Kullanıcı, dizinde benzersiz olmayabilir.Not all users will have a mailNickname attribute, and the value a user has may not be unique in the directory. Ayrıca, eşleştirme için kullanılan öznitelik (Bu örnekte externalId), Azure AD öznitelik eşlemelerindeyapılandırılabilir.Also, the attribute used for matching (which in this case is externalId) is configurable in the Azure AD attribute mappings.

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

Örnek kodda, istek hizmetin sağlayıcısının QueryAsync yöntemine bir çağrıya çevrilir.In the sample code the request is translated into a call to the QueryAsync method of the service’s provider. Bu yöntemin imzası aşağıda verilmiştir:Here is the signature of that method:

 // 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, externalId özniteliği için verilen değere sahip olan bir kullanıcı için, QueryAsync yöntemine geçirilen bağımsız değişkenlerin değerleri şunlardır:In the sample query, for a user with a given value for the externalId attribute, values of the arguments passed to the QueryAsync method are:

  • parametrelere. AlternateFilters. Count: 1parameters.AlternateFilters.Count: 1
  • parametrelere. AlternateFilters. ElementAt (0). AttributePath: "externalId"parameters.AlternateFilters.ElementAt(0).AttributePath: "externalId"
  • parametrelere. AlternateFilters. ElementAt (0). ComparisonOperator: ComparisonOperator. Equalsparameters.AlternateFilters.ElementAt(0).ComparisonOperator: ComparisonOperator.Equals
  • parametrelere. AlternateFilter. ElementAt (0). ComparisonValue: "jbaşak"parameters.AlternateFilter.ElementAt(0).ComparisonValue: "jyoung"

Örnek 2. Kullanıcı sağlamaExample 2. Provision a user

Bir kullanıcının Mailrumu özniteliği değeri ile eşleşen bir externalId özniteliği değeri olan bir kullanıcı için Web hizmetine yapılan bir sorgunun yanıtı, herhangi bir Kullanıcı döndürmüyor, sonra hizmetin Azure Active Directory bir kullanıcıya karşılık gelen bir Kullanıcı sağlaması Azure Active Directory.If the response to a query to the web service for a user with an externalId attribute value that matches the mailNickname attribute value of a user doesn't return any users, then Azure Active Directory requests that the service provision a user corresponding to the one in Azure Active Directory. Bu tür bir istek örneği aşağıda verilmiştir:Here is an example of such a request:

 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",
   "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, hizmetin sağlayıcısının CreateAsync metoduna bir çağrıya çevrilir.In the sample code the request is translated into a call to the CreateAsync method of the service’s provider. Bu yöntemin imzası aşağıda verilmiştir:Here is the signature of that method:

 // 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);

Bir Kullanıcı sağlama isteğinde, kaynak bağımsız değişkeninin değeri Microsoft. SCIM. schemas kitaplığında tanımlanan Microsoft. SCıM. Core2EnterpriseUser sınıfının bir örneğidir.In a request to provision a user, the value of the resource argument is an instance of the Microsoft.SCIM.Core2EnterpriseUser class, defined in the Microsoft.SCIM.Schemas library. Kullanıcı sağlama isteği başarılı olursa, yöntemin uygulanması, tanımlayıcı özelliği değeri ile yeni sağlanan kullanıcının benzersiz tanımlayıcısı olarak ayarlanan Microsoft. SCıM. Core2EnterpriseUser sınıfının bir örneğini döndürmesi beklenir.If the request to provision the user succeeds, then the implementation of the method is expected to return an instance of the Microsoft.SCIM.Core2EnterpriseUser class, with the value of the Identifier property set to the unique identifier of the newly provisioned user.

Örnek 3. Kullanıcının geçerli durumunu sorgulamaExample 3. Query the current state of a user

Bir SCıM tarafından alınan bir kimlik deposunda bulunan olarak bilinen bir kullanıcıyı güncelleştirmek için Azure Active Directory, bu kullanıcının geçerli durumunu hizmetten şu gibi bir istek ile isteyerek devam eder:To update a user known to exist in an identity store fronted by an SCIM, Azure Active Directory proceeds by requesting the current state of that user from the service with a request such as:

 GET ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 HTTP/1.1
 Authorization: Bearer ...

Örnek kodda, istek hizmetin sağlayıcısının RetrieveAsync metoduna bir çağrıya çevrilir.In the sample code the request is translated into a call to the RetrieveAsync method of the service’s provider. Bu yöntemin imzası aşağıda verilmiştir:Here is the signature of that method:

 // 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);

Bir kullanıcının geçerli durumunu alma isteği örneğinde, parametre bağımsız değişkeninin değeri olarak belirtilen nesnenin özelliklerinin değerleri aşağıdaki gibidir:In the example of a request to retrieve the current state of a user, the values of the properties of the object provided as the value of the parameters argument are as follows:

  • Tanımlayıcı: "54D382A4-2050-4C03-94D1-E769F1D15682"Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
  • SchemaIdentifier: "urn: IETF: params: SCIM: schemas: Extension: Enterprise: 2.0: user"SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"

Örnek 4. Bir başvuru özniteliğinin güncelleştirileceği değeri sorgulaExample 4. Query the value of a reference attribute to be updated

Bir başvuru özniteliği güncelleştirilürse Azure Active Directory, hizmet tarafından kullanılan kimlik deposundaki başvuru özniteliğinin geçerli değerinin Azure Active Directory ' deki bu özniteliğin değeriyle eşleşip eşleşmediğini belirleme hizmetini sorgular.If a reference attribute is to be updated, then Azure Active Directory queries the service to determine whether the current value of the reference attribute in the identity store fronted by the service already matches the value of that attribute in Azure Active Directory. Kullanıcılar için, geçerli değerin bu şekilde sorgulandığı tek özniteliği, yönetici özniteliğidir.For users, the only attribute of which the current value is queried in this way is the manager attribute. Bir Kullanıcı nesnesinin Manager özniteliğinin Şu anda belirli bir değere sahip olup olmadığını belirleme isteğine bir örnek aşağıda verilmiştir: örnek kodda, isteğin, hizmetin sağlayıcısının QueryAsync yöntemine bir çağrıya çevrilmesi.Here is an example of a request to determine whether the manager attribute of a user object currently has a certain value: In the sample code the request is translated into a call to the QueryAsync method of the service’s provider. Parametre bağımsız değişkeninin değeri olarak belirtilen nesnenin özelliklerinin değeri aşağıdaki gibidir:The value of the properties of the object provided as the value of the parameters argument are as follows:

  • parametrelere. AlternateFilters. Count: 2parameters.AlternateFilters.Count: 2
  • parametrelere. AlternateFilters. ElementAt (x). AttributePath: "KIMLIK"parameters.AlternateFilters.ElementAt(x).AttributePath: "ID"
  • parametrelere. AlternateFilters. ElementAt (x). ComparisonOperator: ComparisonOperator. Equalsparameters.AlternateFilters.ElementAt(x).ComparisonOperator: ComparisonOperator.Equals
  • parametrelere. AlternateFilter. ElementAt (x). ComparisonValue: "54D382A4-2050-4C03-94D1-E769F1D15682"parameters.AlternateFilter.ElementAt(x).ComparisonValue: "54D382A4-2050-4C03-94D1-E769F1D15682"
  • parametrelere. AlternateFilters. ElementAt (y). AttributePath: "Yönetici"parameters.AlternateFilters.ElementAt(y).AttributePath: "manager"
  • parametrelere. AlternateFilters. ElementAt (y). ComparisonOperator: ComparisonOperator. Equalsparameters.AlternateFilters.ElementAt(y).ComparisonOperator: ComparisonOperator.Equals
  • parametrelere. AlternateFilter. ElementAt (y). ComparisonValue: "2819c223-7f76-453A-919d-413861904646"parameters.AlternateFilter.ElementAt(y).ComparisonValue: "2819c223-7f76-453a-919d-413861904646"
  • parametrelere. RequestedAttributePaths. ElementAt (0): "KIMLIK"parameters.RequestedAttributePaths.ElementAt(0): "ID"
  • parametrelere. SchemaIdentifier: "urn: IETF: params: SCIM: schemas: Extension: Enterprise: 2.0: user"parameters.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"

Burada, x dizininin değeri 0 olabilir ve y dizininin değeri 1 olabilir, ya da x değeri 1 olabilir ve Filter sorgu parametresinin ifadelerinin sırasına bağlı olarak y değeri 0 olabilir.Here, the value of the index x can be 0 and the value of the index y can be 1, or the value of x can be 1 and the value of y can be 0, depending on the order of the expressions of the filter query parameter.

Örnek 5. Bir kullanıcıyı güncelleştirmek için Azure AD 'den bir SCıM hizmetine istekExample 5. Request from Azure AD to an SCIM service to update a user

Bir kullanıcıyı güncelleştirmek için bir SCıM hizmetine Azure Active Directory bir istek örneği aşağıda verilmiştir:Here is an example of a request from Azure Active Directory to an SCIM service to update a user:

  PATCH ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 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/2819c223-7f76-453a-919d-413861904646",
              "value":"2819c223-7f76-453a-919d-413861904646"}]}]}

Örnek kodda, istek hizmetin sağlayıcısının UpdateAsync metoduna bir çağrıya çevrilir.In the sample code the request is translated into a call to the UpdateAsync method of the service’s provider. Bu yöntemin imzası aşağıda verilmiştir:Here is the signature of that method:

 // 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);

Bir kullanıcıyı güncelleştirme isteğine örnek olarak, Patch bağımsız değişkeninin değeri olarak girilen nesne bu özellik değerlerine sahiptir:In the example of a request to update a user, the object provided as the value of the patch argument has these property values:

  • ResourceIdentifier. Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"ResourceIdentifier.Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
  • ResourceIdentifier. SchemaIdentifier: "urn: IETF: params: SCIM: schemas: Extension: Enterprise: 2.0: user"ResourceIdentifier.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
  • (PatchRequest2 olarak PatchRequest). Operations. Count: 1(PatchRequest as PatchRequest2).Operations.Count: 1
  • (PatchRequest2 olarak PatchRequest). Operations. ElementAt (0). OperationName: OperationName. Add(PatchRequest as PatchRequest2).Operations.ElementAt(0).OperationName: OperationName.Add
  • (PatchRequest2 olarak PatchRequest). Operations. ElementAt (0). Path. AttributePath: "Yönetici"(PatchRequest as PatchRequest2).Operations.ElementAt(0).Path.AttributePath: "manager"
  • (PatchRequest2 olarak PatchRequest). Operations. ElementAt (0). Değer. Count: 1(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.Count: 1
  • (PatchRequest2 olarak PatchRequest). Operations. ElementAt (0). Value. ElementAt (0). Başvuru: http://.../scim/Users/2819c223-7f76-453a-919d-413861904646(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Reference: http://.../scim/Users/2819c223-7f76-453a-919d-413861904646
  • (PatchRequest2 olarak PatchRequest). Operations. ElementAt (0). Value. ElementAt (0). Değer: 2819c223-7f76-453A-919d-413861904646(PatchRequest as PatchRequest2).Operations.ElementAt(0).Value.ElementAt(0).Value: 2819c223-7f76-453a-919d-413861904646

Örnek 6. Bir kullanıcının sağlamasını kaldırmaExample 6. Deprovision a user

Bir kullanıcının SCıM hizmeti tarafından belirtilen bir kimlik deposundan sağlamasını kaldırmak için, Azure AD şöyle bir istek gönderir:To deprovision a user from an identity store fronted by an SCIM service, Azure AD sends a request such as:

  DELETE ~/scim/Users/54D382A4-2050-4C03-94D1-E769F1D15682 HTTP/1.1
  Authorization: Bearer ...

Örnek kodda, istek hizmetin sağlayıcısının DeleteAsync yöntemine bir çağrıya çevrilir.In the sample code the request is translated into a call to the DeleteAsync method of the service’s provider. Bu yöntemin imzası aşağıda verilmiştir:Here is the signature of that method:

 // 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 sunulan nesne, bir kullanıcının sağlamasını kaldırma isteği örneğinde bu özellik değerlerine sahiptir:The object provided as the value of the resourceIdentifier argument has these property values in the example of a request to deprovision a user:

  • ResourceIdentifier. Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"ResourceIdentifier.Identifier: "54D382A4-2050-4C03-94D1-E769F1D15682"
  • ResourceIdentifier. SchemaIdentifier: "urn: IETF: params: SCIM: schemas: Extension: Enterprise: 2.0: user"ResourceIdentifier.SchemaIdentifier: "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"

4. Adım: SCıM uç noktanızı Azure AD SCıM istemcisiyle tümleştirmeStep 4: Integrate your SCIM endpoint with the Azure AD SCIM client

Azure AD, SCIM 2,0 protokolününbelirli bir profilini uygulayan uygulamalara atanan kullanıcıları ve grupları otomatik olarak sağlayacak şekilde yapılandırılabilir.Azure AD can be configured to automatically provision assigned users and groups to applications that implement a specific profile of the SCIM 2.0 protocol. Profilin özellikleri 2. Adım: Azure AD SCıM uygulamasını anlamabölümünde belgelenmiştir.The specifics of the profile are documented in Step 2: Understand the Azure AD SCIM implementation.

Bu gereksinimlerle uyumluluk bildirimleri için uygulama sağlayıcınıza veya uygulama sağlayıcınızın belgelerine danışın.Check with your application provider, or your application provider's documentation for statements of compatibility with these requirements.

Önemli

Azure AD SCıM uygulaması, Azure AD Kullanıcı sağlama hizmeti 'nin üzerine kurulmuştur. Bu, kullanıcıların Azure AD ile hedef uygulama arasında sürekli olarak eşitlenmesi için tasarlanan ve çok özel bir standart işlem kümesi uyguladığı şekilde tasarlanmıştır.The Azure AD SCIM implementation is built on top of the Azure AD user provisioning service, which is designed to constantly keep users in sync between Azure AD and the target application, and implements a very specific set of standard operations. Azure AD SCıM istemcisinin davranışını anlamak için bu davranışları anlamak önemlidir.It's important to understand these behaviors to understand the behavior of the Azure AD SCIM client. Daha fazla bilgi için bkz. sağlama döngüleri: başlangıç ve artımlı , sağlama nasıl?.For more information, see the section Provisioning cycles: Initial and incremental in How provisioning works.

Kullanmaya başlamaGetting started

Bu makalede açıklanan SCıM profilini destekleyen uygulamalar, Azure AD uygulama galerisinde "Galeri dışı uygulama" özelliği kullanılarak Azure Active Directory bağlanabilir.Applications that support the SCIM profile described in this article can be connected to Azure Active Directory using the "non-gallery application" feature in the Azure AD application gallery. Bağlantı kurulduktan sonra Azure AD, her 40 dakikada bir eşitleme işlemi çalıştırarak, atanan kullanıcılar ve gruplar için uygulamanın SCıM uç noktasını sorgular ve atama ayrıntılarına göre bunları oluşturur veya değiştirir.Once connected, Azure AD runs a synchronization process every 40 minutes where it queries the application's SCIM endpoint for assigned users and groups, and creates or modifies them according to the assignment details.

SCıM 'i destekleyen bir uygulamaya bağlanmak için:To connect an application that supports SCIM:

  1. Azure Active Directory portalındaoturum açın.Sign in to the Azure Active Directory portal. Geliştirici programına kaydolduktan sonra, P2 lisanslarıyla Azure Active Directory ücretsiz bir denemeye erişebileceğinizi unutmayın.Note that you can get access a free trial for Azure Active Directory with P2 licenses by signing up for the developer program

  2. Sol bölmeden Kurumsal uygulamalar ' ı seçin.Select Enterprise applications from the left pane. Galeriden eklenen uygulamalar dahil olmak üzere, yapılandırılan tüm uygulamaların bir listesi gösterilir.A list of all configured apps is shown, including apps that were added from the gallery.

  3. + Yeni uygulama > Tüm > Galeri dışı uygulamalar' ı seçin.Select + New application > All > Non-gallery application.

  4. Uygulamanız için bir ad girin ve uygulama nesnesi oluşturmak için Ekle ' yi seçin.Enter a name for your application, and select Add to create an app object. Yeni uygulama, kurumsal uygulamalar listesine eklenir ve uygulama yönetimi ekranına açılır.The new app is added to the list of enterprise applications and opens to its app management screen.

    Ekran görüntüsünde Azure AD Uygulama Galerisi gösterilmektedirScreenshot shows the Azure AD application gallery
    Azure AD Uygulama GalerisiAzure AD application gallery

  5. Uygulama yönetimi ekranında, sol panelde sağlama ' yı seçin.In the app management screen, select Provisioning in the left panel.

  6. Sağlama modu menüsünde Otomatik' i seçin.In the Provisioning Mode menu, select Automatic.

    Örnek: Azure portal bir uygulamanın sağlama sayfasıExample: An app's Provisioning page in the Azure portal
    Azure portal sağlamayı yapılandırmaConfiguring provisioning in the Azure portal

  7. Kiracı URL 'si alanına uygulamanın SCIM uç noktasının URL 'sini girin.In the Tenant URL field, enter the URL of the application's SCIM endpoint. Örnek: https://api.contoso.com/scim/Example: https://api.contoso.com/scim/

  8. SCıM uç noktası, Azure AD 'den başka bir verenin bir OAuth taşıyıcı belirteci gerektiriyorsa, gerekli OAuth taşıyıcı belirtecini isteğe bağlı gizli belirteç alanına kopyalayın.If the SCIM endpoint requires an OAuth bearer token from an issuer other than Azure AD, then copy the required OAuth bearer token into the optional Secret Token field. Bu alan boş bırakılırsa Azure AD, Azure AD 'den her istekle verilen bir OAuth taşıyıcı belirteci içerir.If this field is left blank, Azure AD includes an OAuth bearer token issued from Azure AD with each request. Kimlik sağlayıcısı olarak Azure AD kullanan uygulamalar, bu Azure AD veren belirtecini doğrulayabilir.Apps that use Azure AD as an identity provider can validate this Azure AD-issued token.

    Not

    Bu alanı boş bırakmanız ve Azure AD tarafından oluşturulan bir belirtece güvenmamanız önerilmez.It's not recommended to leave this field blank and rely on a token generated by Azure AD. Bu seçenek öncelikle test amacıyla kullanılabilir.This option is primarily available for testing purposes.

  9. SCıM uç noktasına bağlanmak Azure Active Directory denemek için Bağlantıyı Sına ' yı seçin.Select Test Connection to have Azure Active Directory attempt to connect to the SCIM endpoint. Deneme başarısız olursa, hata bilgileri görüntülenir.If the attempt fails, error information is displayed.

    Not

    Test bağlantısı , mevcut olmayan bir kullanıcı için SCIM uç noktasını sorgular, bu da Azure AD yapılandırmasında eşleşen özellik olarak rastgele bir GUID kullanılıyor.Test Connection queries the SCIM endpoint for a user that doesn't exist, using a random GUID as the matching property selected in the Azure AD configuration. Beklenen doğru yanıt, boş bir SCIM ListResponse iletisi ile HTTP 200 Tamam ' dır.The expected correct response is HTTP 200 OK with an empty SCIM ListResponse message.

  10. Uygulamaya bağlanma denemeleri başarılı olursa, yönetici kimlik bilgilerini kaydetmek için Kaydet ' i seçin.If the attempts to connect to the application succeed, then select Save to save the admin credentials.

  11. Eşlemeler bölümünde, biri Kullanıcı nesneleri ve bir grup nesnesi için olmak üzere iki seçilebilir öznitelik eşlemesivardır.In the Mappings section, there are two selectable sets of attribute mappings: one for user objects and one for group objects. Uygulamanıza Azure Active Directory eşitlenecek öznitelikleri gözden geçirmek için her birini seçin.Select each one to review the attributes that are synchronized from Azure Active Directory to your app. Eşleşen özellikler olarak seçilen öznitelikler, güncelleştirme işlemleri için uygulamanızdaki kullanıcıları ve grupları eşleştirmek için kullanılır.The attributes selected as Matching properties are used to match the users and groups in your app for update operations. Değişiklikleri uygulamak için Kaydet ' i seçin.Select Save to commit any changes.

    Not

    İsteğe bağlı olarak, "gruplar" eşlemesini devre dışı bırakarak grup nesnelerinin eşitlenmesini devre dışı bırakabilirsiniz.You can optionally disable syncing of group objects by disabling the "groups" mapping.

  12. Ayarlar' ın altında, kapsam alanı hangi kullanıcıların ve grupların eşitleneceğini tanımlar.Under Settings, the Scope field defines which users and groups are synchronized. Yalnızca Kullanıcılar ve gruplar sekmesinde atanan kullanıcıları ve grupları eşitlemek için yalnızca atanmış kullanıcıları ve grupları Eşitle (önerilir) öğesini seçin.Select Sync only assigned users and groups (recommended) to only sync users and groups assigned in the Users and groups tab.

  13. Yapılandırmanız tamamlandıktan sonra sağlama durumunu Açıkolarak ayarlayın.Once your configuration is complete, set the Provisioning Status to On.

  14. Azure AD sağlama hizmetini başlatmak için Kaydet ' i seçin.Select Save to start the Azure AD provisioning service.

  15. Yalnızca atanmış kullanıcıları ve grupları eşitlese (önerilir), Kullanıcılar ve gruplar sekmesini seçtiğinizden emin olun ve eşitlemek istediğiniz kullanıcıları veya grupları atayın.If syncing only assigned users and groups (recommended), be sure to select the Users and groups tab and assign the users or groups you want to sync.

Başlangıç çevrimi başladıktan sonra, uygulamanızdaki sağlama hizmeti tarafından gerçekleştirilen tüm işlemleri gösteren ilerlemeyi izlemek için sol panelde sağlama günlükleri ' ni seçebilirsiniz.Once the initial cycle has started, you can select Provisioning logs in the left panel to monitor progress, which shows all actions done by the provisioning service on your app. Azure AD sağlama günlüklerinin nasıl okunduğu hakkında daha fazla bilgi için bkz. Otomatik Kullanıcı hesabı sağlamayı raporlama.For more information on how to read the Azure AD provisioning logs, see Reporting on automatic user account provisioning.

Not

İlk döngüyü daha sonra, hizmetin çalıştığı sürece yaklaşık 40 dakikada bir gerçekleşen daha sonraki eşitliden daha uzun sürer.The initial cycle takes longer to perform than later syncs, which occur approximately every 40 minutes as long as the service is running.

Birden fazla kiracı tarafından kullanılacak bir uygulama oluşturuyorsanız, Azure AD uygulama galerisinde kullanılabilir hale getirebilirsiniz.If you're building an application that will be used by more than one tenant, you can make it available in the Azure AD application gallery. Bu, kuruluşların uygulamayı keşfetmesini ve sağlamayı yapılandırmasını kolaylaştırır.This will make it easy for organizations to discover the application and configure provisioning. Uygulamanızı Azure AD galerisinde yayımlama ve sağlama sağlamak kolaydır.Publishing your app in the Azure AD gallery and making provisioning available to others is easy. Buradakiadımlara göz atın.Check out the steps here. Microsoft, uygulamanızı galerimize tümleştirme, uç noktanızı test etme ve müşterilerin kullanması için ekleme belgelerini yayınlama konusunda sizinle birlikte çalışacaktır.Microsoft will work with you to integrate your application into our gallery, test your endpoint, and release onboarding documentation for customers to use.

Uygulamanızın eklendi Quicky olduğundan ve müşterilerin sorunsuz bir dağıtım deneyimine sahip olduğundan emin olmak için aşağıdaki denetim listesini izleyin.Follow the checklist below to ensure that your application is onboarded quicky and customers have a smooth deployment experience. Bu bilgiler, galeriye ekleme sırasında sizin için toplanacaktır.The information will be gathered from you when onboarding to the gallery.

  • SCIM 2,0 Kullanıcı ve grup uç noktasını destekleme (yalnızca bir tane gereklidir ancak her ikisi de önerilir)Support a SCIM 2.0 user and group endpoint (Only one is required but both are recommended)
  • Her kiracı için saniyede en az 25 istek desteklenir (gerekli)Support at least 25 requests per second per tenant (Required)
  • Mühendisler için mühendislik ve destek kişileri oluşturun müşteri galerisini ekleme (gerekli)Establish engineering and support contacts to guide customers post gallery onboarding (Required)
  • uygulamanız için 3 süresi dolan test kimlik bilgileri (gerekli)3 Non-expiring test credentials for your application (Required)
  • Aşağıda açıklandığı gibi, OAuth yetkilendirme kodu yetkisini veya uzun süreli bir belirteci destekler (gerekli)Support the OAuth authorization code grant or a long lived token as described below (Required)
  • Müşteri galerisinin ekleme işlemini desteklemesi için mühendislik ve destek iletişim noktası oluşturma (gerekli)Establish an engineering and support point of contact to support customers post gallery onboarding (Required)
  • Tek bir düzeltme ekiyle birden çok grup üyeliğini güncelleştirme desteği (önerilir)Support updating multiple group memberships with a single PATCH (Recommended)
  • SCıM uç noktanızı genel olarak belgeleyin (önerilir)Document your SCIM endpoint publicly (Recommended)
  • Şema bulmayı destekle (önerilir)Support schema discovery (Recommended)

SCıM özelliği, kimlik doğrulama ve yetkilendirme için bir SCıM 'e özgü düzen tanımlamaz.The SCIM spec does not define a SCIM-specific scheme for authentication and authorization. Mevcut sektör standartlarının kullanımını temel alır.It relies on the use of existing industry standards. Azure AD sağlama istemcisi galerideki uygulamalar için iki yetkilendirme yöntemini destekler.The Azure AD provisioning client supports two authorization methods for applications in the gallery.

Yetkilendirme YöntemiAuthorization method ArtılarıPros SimgelerCons DestekSupport
Kullanıcı adı ve parola (Azure AD tarafından önerilmez veya desteklenmez)Username and password (not recommended or supported by Azure AD) Kolayca uygulanırEasy to implement Güvenli olmayan- PA $ $Word önemi yokturInsecure - Your Pa$$word doesn't matter Galeri uygulamaları için büyük/küçük harf esasına göre desteklenir.Supported on a case-by-case basis for gallery apps. Galeri olmayan uygulamalar için desteklenmez.Not supported for non-gallery apps.
Uzun süreli taşıyıcı belirteciLong-lived bearer token Uzun süreli belirteçler için bir kullanıcının mevcut olması gerekmez.Long-lived tokens do not require a user to be present. Yöneticiler, sağlama ayarlarken kolayca kullanılabilir.They are easy for admins to use when setting up provisioning. Uzun süreli belirteçlerin, e-posta gibi güvenli olmayan yöntemler kullanmadan bir yönetici ile paylaşılması zor olabilir.Long-lived tokens can be hard to share with an admin without using insecure methods such as email. Galeri ve Galeri olmayan uygulamalar için desteklenir.Supported for gallery and non-gallery apps.
OAuth yetkilendirme kodu vermeOAuth authorization code grant Erişim belirteçleri parolalardan çok daha kısa süreli ve uzun süreli taşıyıcı belirteçlerinin sahip olmadığı otomatik bir yenileme mekanizmasına sahiptir.Access tokens are much shorter-lived than passwords, and have an automated refresh mechanism that long-lived bearer tokens do not have. İlk yetkilendirme sırasında, bir sorumluluk düzeyi ekleyerek gerçek bir kullanıcının mevcut olması gerekir.A real user must be present during initial authorization, adding a level of accountability. Bir kullanıcının mevcut olmasını gerektirir.Requires a user to be present. Kullanıcı kuruluştan ayrılırsa, belirteç geçersizdir ve yetkilendirmenin yeniden tamamlanması gerekir.If the user leaves the organization, the token is invalid and authorization will need to be completed again. Galeri uygulamaları için desteklenir.Supported for gallery apps. Galeri olmayan uygulamalar için destek çalışma.Support for non-gallery apps is underway.
OAuth istemci kimlik bilgileri vermeOAuth client credentials grant Erişim belirteçleri parolalardan çok daha kısa süreli ve uzun süreli taşıyıcı belirteçlerinin sahip olmadığı otomatik bir yenileme mekanizmasına sahiptir.Access tokens are much shorter-lived than passwords, and have an automated refresh mechanism that long-lived bearer tokens do not have. Hem yetkilendirme kodu verme hem de istemci kimlik bilgileri, aynı tür erişim belirtecini oluşturur, bu nedenle bu yöntemler arasında geçiş yapmak API 'ye saydamdır.Both the authorization code grant and the client credentials grant create the same type of access token, so moving between these methods is transparent to the API. Sağlama tamamen otomatikleştirilebilir ve yeni belirteçler Kullanıcı etkileşimi olmadan sessizce istenebilir.Provisioning can be completely automated, and new tokens can be silently requested without user interaction. Galeri ve Galeri olmayan uygulamalar için desteklenmez.Not supported for gallery and non-gallery apps. Destek kapsamımızda.Support is in our backlog.

[!NOTE] Azure AD sağlama yapılandırması özel uygulama kullanıcı arabiriminde belirteç alanını boş bırakmanız önerilmez.It's not recommended to leave the token field blank in the Azure AD provisioning configuration custom app UI. Oluşturulan belirteç öncelikle test amacıyla kullanılabilir.The token generated is primarily available for testing purposes.

OAuth yetkilendirme kodu verme akışı: Sağlama hizmeti yetkilendirme kodu vermeyidestekler.OAuth authorization code grant flow: The provisioning service supports the authorization code grant. Uygulamanızı galeride yayımlama isteğinizi gönderdikten sonra, takımımız aşağıdaki bilgileri toplamak için sizinle birlikte çalışacaktır:After submitting your request for publishing your app in the gallery, our team will work with you to collect the following information:

  • Yetkilendirme URL 'SI: istemci tarafından, Kullanıcı Aracısı yeniden yönlendirme aracılığıyla kaynak sahibinden yetkilendirme elde etmek için bir URL.Authorization URL: A URL by the client to obtain authorization from the resource owner via user-agent redirection. Kullanıcı, erişim yetkisi vermek için bu URL 'ye yeniden yönlendirilir.The user is redirected to this URL to authorize access. Bu URL 'nin şu anda kiracı başına yapılandırılamadığını unutmayın.Note that this URL is currently not configurable per tenant.
  • Belirteç Exchange URL 'SI: bir erişim belirtecine, genellikle istemci kimlik doğrulamasıyla bir yetkilendirme izni vermek için istemcinin URL 'SI.Token exchange URL: A URL by the client to exchange an authorization grant for an access token, typically with client authentication. Bu URL 'nin şu anda kiracı başına yapılandırılamadığını unutmayın.Note that this URL is currently not configurable per tenant.
  • İstemci KIMLIĞI: yetkilendirme sunucusu, kayıtlı istemciye, istemci tarafından sunulan kayıt bilgilerini temsil eden benzersiz bir dize olan istemci tanımlayıcısını verir.Client ID: The authorization server issues the registered client a client identifier, which is a unique string representing the registration information provided by the client. İstemci tanımlayıcısı gizli değil; Kaynak sahibine gösterilir ve yalnızca istemci kimlik doğrulaması için kullanılmamalıdır.The client identifier is not a secret; it is exposed to the resource owner and must not be used alone for client authentication.
  • Gizli anahtar: istemci parolası, yetkilendirme sunucusu tarafından oluşturulan bir gizli dizi.Client secret: The client secret is a secret generated by the authorization server. Bu, yalnızca yetkilendirme sunucusu için bilinen benzersiz bir değer olmalıdır.It should be a unique value known only to the authorization server.

İstemci parolasının pozlaması nedeniyle OAuth v1 'nin desteklenmediğini unutmayın.Note that OAuth v1 is not supported due to exposure of the client secret. OAuth v2 desteklenir.OAuth v2 is supported.

En iyi uygulamalar (önerilir ancak gerekli değildir):Best practices (recommended but not required):

  • Birden çok yeniden yönlendirme URL 'sini destekler.Support multiple redirect URLs. Yöneticiler, "portal.azure.com" ve "aad.portal.azure.com" ile sağlamayı yapılandırabilir.Administrators can configure provisioning from both "portal.azure.com" and "aad.portal.azure.com". Birden çok yeniden yönlendirme URL 'Leri desteklemek, kullanıcıların her iki portaldan da erişim yetkisi alabilmek içinSupporting multiple redirect URLs will ensure that users can authorize access from either portal.
  • Kapalı kalma süresi olmadan sorunsuz gizli yenilemeyi sağlamak için birden çok gizli dizi desteği.Support multiple secrets to ensure smooth secret renewal, without downtime.

Uzun süreli OAuth taşıyıcı belirteçleri: Uygulamanız OAuth yetkilendirme kodu verme akışını desteklemiyorsa, yöneticinin sağlama tümleştirmesini ayarlamak için kullanabileceği bir uzun süreli OAuth taşıyıcı belirteci de oluşturabilirsiniz.Long lived OAuth bearer tokens: If your application does not support the OAuth authorization code grant flow, you can also generate a long lived OAuth bearer token than that an administrator can use to setup the provisioning integration. Belirtecin kalıcı olması gerekir, aksi takdirde, belirtecin süresi dolarsa sağlama işi karantinaya alınır.The token should be perpetual, or else the provisioning job will be quarantined when the token expires. Bu belirtecin boyutu 1KB 'tan sonra olmalıdır.This token must be below 1KB in size.

Ek kimlik doğrulama ve yetkilendirme yöntemleri için UserVoice'ta bize bilgi verin.For additional authentication and authorization methods, let us know on UserVoice.

Birleşme tümleştirmemiz için bir tanıma ve talep konusunda yardımcı olmak üzere, var olan belgelerinizi güncelleştirmenizi ve pazarlama kanallarınızın tümleştirmesinin korunmasını öneririz.To help drive awareness and demand of our joint integration, we recommend you update your existing documentation and amplify the integration in your marketing channels. Aşağıda, başlatmayı desteklemek için tamamladığımız bir denetim listesi etkinliği kümesi verilmiştirThe below is a set of checklist activities we recommend you complete to support the launch

  • Satış ve müşteri desteği hazırlığı.Sales and customer support readiness. Satış ve destek ekiplerinizin farkında olduğundan ve tümleştirme özelliklerine konuşabildiğinden emin olun.Ensure your sales and support teams are aware and can speak to the integration capabilities. Satış ve destek ekibinizin kısa bir yanı, bunları SSS ile sağlayın ve satış malzemelerinize tümleştirme dahil edin.Brief your sales and support team, provide them with FAQs and include the integration into your sales materials.
  • Blog gönderisi ve/veya basın yayını.Blog post and/or press release. Birleşik tümleştirmeyi, avantajları ve nasıl başlaılacağını açıklayan bir blog gönderisi veya bir yayın yayını oluşturun.Craft a blog post or press release that describes the joint integration, the benefits and how to get started. Örnek: ımprivata ve Azure Active Directory Press yayınıExample: Imprivata and Azure Active Directory Press Release
  • Sosyal medya.Social media. Müşterilerinize tümleştirmeyi yükseltmek için Twitter, Facebook veya LinkedIn gibi sosyal medya ortamınızdan yararlanın.Leverage your social media like Twitter, Facebook or LinkedIn to promote the integration to your customers. @AzureADGönderinizi retweet.Be sure to include @AzureAD so we can retweet your post. Örnek: ımprivata Twitter gönderisiExample: Imprivata Twitter Post
  • Pazarlama Web sitesi.Marketing website. Ortak tümleştirmenin kullanılabilirliğini dahil etmek için pazarlama sayfalarınızı (örn. tümleştirme sayfası, iş ortağı sayfası, fiyatlandırma sayfası vb.) oluşturun veya güncelleştirin.Create or update your marketing pages (e.g. integration page, partner page, pricing page, etc.) to include the availability of the joint integration. Örnek: Pingboard tümleştirme sayfası, Smartsheet tümleştirme sayfası, Monday.com fiyatlandırma sayfasıExample: Pingboard integration Page, Smartsheet integration page, Monday.com pricing page
  • Teknik belgeler.Technical documentation. Müşterilerin nasıl başlatıladığına ilişkin bir yardım merkezi makalesi veya teknik belgeler oluşturun.Create a help center article or technical documentation on how customers can get started. Örnek: Envoy + Microsoft Azure Active Directory Tümleştirmesi.Example: Envoy + Microsoft Azure Active Directory integration.
  • Müşteri iletişimi.Customer communication. Müşteri iletişiminizdeki yeni tümleştirmede müşterileri uyarır (aylık bültenler, e-posta kampanyaları, ürün sürüm notları).Alert customers of the new integration through your customer communication (monthly newsletters, email campaigns, product release notes).