Kullanıcı kaydı ve ürün aboneliği için temsilci seçme

ŞUNLAR IÇIN GEÇERLIDIR: Geliştirici | Temel | Standart | Premium

Temsilci seçme, web sitenizin kullanıcı verilerine sahip olmasını ve özel doğrulama gerçekleştirmesini sağlar. Temsilci seçme ile, geliştirici portalının yerleşik işlevselliği yerine mevcut web sitenizi kullanarak geliştirici oturum açma/kaydolma (ve ilgili hesap yönetimi işlemleri) ve ürün aboneliğini işleyebilirsiniz.

Geliştirici oturum açma ve kaydolma yetkisini alma

Geliştirici oturum açma, kaydolma ve geliştirici hesabı yönetimi seçeneklerini mevcut web sitenize devretmek için sitenizde özel bir temsilci uç noktası oluşturun. Bu özel temsilci, API Management geliştirici portalından başlatılan tüm oturum açma/kaydolma ve ilgili istekler için giriş noktası görevi görür.

Son iş akışı şu şekilde olacaktır:

  1. Geliştirici, API Management geliştirici portalında oturum açma veya kaydolma bağlantısına veya hesap yönetimi bağlantısına tıklar.
  2. Tarayıcı temsilci uç noktasına yeniden yönlendirir.
  3. Döndürülen temsilci uç noktası, kullanıcıyı oturum açma/kaydolma veya hesap yönetimi kullanıcı arabirimiyle yeniden yönlendirir veya sunar.
  4. İşlem tamamlandıktan sonra kullanıcı, bıraktığı konumda API Management geliştirici portalına geri yönlendirilir.

API Management'ı istekleri temsilci uç noktası aracılığıyla yönlendirecek şekilde ayarlama

  1. Azure portalında API Management kaynağınızda Geliştirici portalı araması yapın.

  2. Temsilci seçme öğesine tıklayın.

  3. Temsilci oturum açma ve kaydolmayı etkinleştirmek için onay kutusuna tıklayın.

    Portalda oturum açma ve kaydolma temsilcilerini gösteren ekran görüntüsü.

  4. Özel temsilci uç noktanızın URL'sine karar verin ve temsilci uç noktası URL'si alanına girin.

  5. Temsilci Doğrulama Anahtarı alanında:

    • İsteğin API Management'tan geldiğini doğrulama amacıyla sağlanan imzayı hesaplamak için kullanılan bir gizli dizi girin.
    • Api Management için Oluştur düğmesine tıklayarak sizin için rastgele bir anahtar oluşturun.
  6. Kaydet'e tıklayın.

Temsilci uç noktanızı oluşturma

Sitenizde uygulanacak yeni bir temsilci uç noktası oluşturmak için önerilen adımlar:

  1. İşleme bağlı olarak aşağıdaki formda bir istek alın:

    http://www.yourwebsite.com/apimdelegation?operation={operation}& returnUrl={Kaynak sayfanın URL'si}&salt={string}&sig={string}

    -Veya-

    http://www.yourwebsite.com/apimdelegation?operation={operation}& userId={account}&salt={string}&sig={string} kullanıcı kimliği

    Sorgu parametreleri:

    Parametre Açıklama
    Işlem Temsilci isteği türünü tanımlar. Kullanılabilir işlemler: SignIn, SignUp, ChangePassword, ChangeProfile, CloseAccount, SignOut.
    returnUrl Oturum Açma veya Kaydolma'da, kullanıcının oturum açma veya kaydolma bağlantısına tıkladığı URL.
    Userıd ChangePassword, ChangeProfile, CloseAccount ve SignOut'ta, yönetmek istediğiniz hesabın kullanıcı kimliği.
    Tuz Güvenlik karması hesaplama için kullanılan özel bir tuz dizesi.
    Sıg Kendi hesaplanan karmanızla karşılaştırmak için kullanılan hesaplanan güvenlik karması.
  2. İsteğin Azure API Management'tan geldiğini doğrulayın (isteğe bağlı, ancak güvenlik için kesinlikle önerilir).

    • ReturnUrl (veya UserId) ve salt sorgu parametrelerine göre bir dizenin HMAC-SHA512 karması hesaplama. Örnekler için örnek kodumuzu gözden geçirin.

      Oturum Açma ve Kaydolma için:

      HMAC(salt + '\n' + returnUrl)
      

      ChangePassword, ChangeProfile, CloseAccount ve SignOut için:

      HMAC(salt + '\n' + userId)
      
    • Yukarıdaki hesaplanan karmayı sig sorgu parametresinin değeriyle karşılaştırın. İki karma eşleşiyorsa, sonraki adıma geçin. Aksi takdirde isteği reddedin.

  3. Oturum açma/kaydolma veya hesap yönetimi işlemi isteği aldığınızı doğrulayın.

  4. Kullanıcıya oturum açma/kaydolma veya hesap yönetimi kullanıcı arabirimi sunma.

  5. İşlemi sizin tarafınızda tamamladıktan sonra API Management'ta kullanıcıyı yönetin. Örneğin, kullanıcı kaydolırsa API Management'ta buna karşılık gelen bir hesap oluşturun.

  6. Oturum açma veya kaydolma sonrasında, kullanıcının kimliği başarıyla doğrulandığında:

    • API Management REST API aracılığıyla paylaşılan erişim belirteci isteyin.

    • Yukarıdaki API çağrısından aldığınız SSO URL'sine bir returnUrl sorgu parametresi ekleyin. Örneğin:

      https://contoso.developer.azure-api.net/signin-sso?token=<URL-encoded token>&returnUrl=%2Freturn%2Furl

    • Kullanıcıyı yukarıda oluşturulan URL'ye yeniden yönlendirin.

Ürün aboneliğini devretme

Ürün aboneliklerini temsilci seçme, kullanıcı oturum açma/kaydolma için temsilci seçmeye benzer şekilde çalışır. Son iş akışı aşağıdaki gibi olacaktır:

  1. Geliştirici, API Management geliştirici portalında bir ürün seçer ve Abone Ol düğmesine tıklar.
  2. Tarayıcı temsilci uç noktasına yeniden yönlendirir.
  3. Temsilci uç noktası, tasarladığınız gerekli ürün aboneliği adımlarını gerçekleştirir. Bunlar şunları içerebilir:
    • Faturalama bilgilerini istemek için başka bir sayfaya yönlendiriliyor.
    • Ek sorular sorma.
    • Bilgileri depolama ve herhangi bir kullanıcı eylemi gerektirmeme.

API Management işlevini etkinleştirme

Temsilci seçme sayfasında Ürün aboneliğine temsilci seç'e tıklayın.

Temsilci uç noktanızı oluşturma

Sitenizde uygulanacak yeni bir temsilci uç noktası oluşturmak için önerilen adımlar:

  1. İşleme bağlı olarak aşağıdaki formda bir istek alın.

    http://www.yourwebsite.com/apimdelegation?operation={operation}&p roductId={abone olunacak ürün}&userId={user making request}&salt={string}&sig={string}

    -Veya-

    http://www.yourwebsite.com/apimdelegation?operation={operation}& subscriptionId={yönetilecek abonelik}&salt={string}&sig={string}

    Sorgu parametreleri:

    Parametre Açıklama
    Işlem Temsilci isteği türünü tanımlar. Geçerli ürün aboneliği istekleri seçenekleri şunlardır:
    • Abone ol: Kullanıcıyı verilen kimlikle belirli bir ürüne abone olma isteği (aşağıya bakın).
    • Abonelikten çıkma: Bir kullanıcının ürün aboneliğinden çıkma isteği
    Productıd Abone Ol'da, kullanıcının abonelik istediği ürün kimliği.
    Userıd Abone ol'da, istekte bulunan kullanıcının kimliği.
    subscriptionId Aboneliği kaldır'da ürün aboneliği kimliği.
    Tuz Güvenlik karması hesaplama için kullanılan özel bir tuz dizesi.
    Sıg Kendi hesaplanan karmanızla karşılaştırmak için kullanılan hesaplanan güvenlik karması.
  2. İsteğin Azure API Management'tan geldiğini doğrulayın (isteğe bağlı, ancak güvenlik için kesinlikle önerilir)

    • ProductId ve userId (veya subscriptionId) ve salt query parametrelerine dayalı olarak bir dizenin HMAC-SHA512'sini hesaplama:

      Abone Ol için:

      HMAC(salt + '\n' + productId + '\n' + userId)
      

      Abonelikten Çıkma için:

      HMAC(salt + '\n' + subscriptionId)
      
    • Yukarıdaki hesaplanan karmayı sig sorgu parametresinin değeriyle karşılaştırın. İki karma eşleşiyorsa, sonraki adıma geçin. Aksi takdirde isteği reddedin.

  3. Ürün aboneliğini, işlemde istenen işlem türüne göre işleyin (örneğin: faturalama, diğer sorular vb.).

  4. İşlemi sizin tarafınızda tamamladıktan sonra API Management'ta aboneliği yönetin. Örneğin, abonelikler için REST API'yi çağırarak kullanıcıyı API Management ürününe abone yapın.

Örnek kod

Bu kod örnekleri, kullanıcı oturum açma veya kaydolma yetkisini alırken sorgu parametresinin returnUrl karması oluşturma işlemini gösterir. returnUrl, kullanıcının oturum açma veya kaydolma bağlantısına tıkladığı sayfanın URL'sidir.

  • Azure portalının Temsilci seçme ekranında ayarlanan temsilci doğrulama anahtarını alın.
  • İmzayı doğrulayan ve geçirilen returnUrl'ün geçerliliğini kanıtlayan bir HMAC oluşturun.

Küçük bir değişiklikle, ile ve userId ürün aboneliğini temsilci olarak seçme gibi productId diğer karmaları hesaplamak için aynı kodu kullanabilirsiniz.

returnUrl karması oluşturmak için C# kodu

using System.Security.Cryptography;

string key = "delegation validation key";
string returnUrl = "returnUrl query parameter";
string salt = "salt query parameter";
string signature;
using (var encoder = new HMACSHA512(Convert.FromBase64String(key)))
{
    signature = Convert.ToBase64String(encoder.ComputeHash(Encoding.UTF8.GetBytes(salt + "\n" + returnUrl)));
    // change to (salt + "\n" + productId + "\n" + userId) when delegating product subscription
    // compare signature to sig query parameter
}

returnUrl karması oluşturmak için NodeJS kodu

var crypto = require('crypto');

var key = 'delegation validation key'; 
var returnUrl = 'returnUrl query parameter';
var salt = 'salt query parameter';

var hmac = crypto.createHmac('sha512', new Buffer(key, 'base64'));
var digest = hmac.update(salt + '\n' + returnUrl).digest();
// change to (salt + "\n" + productId + "\n" + userId) when delegating product subscription
// compare signature to sig query parameter

var signature = digest.toString('base64');

Önemli

Temsilci değişikliklerinin geçerli olması için geliştirici portalını yeniden yayımlamanız gerekir.

Sonraki adımlar