OAuth 2.0 örtülü izin akışını portalınız içinde kullanın

Not

12 Ekim 2022 tarihi itibarıyla Power Apps portalları, Power Pages olarak adlandırılmıştır. Daha fazla bilgi: Microsoft Power Pages genel kullanıma sunuldu (blog)
Yakında Power Apps portalları belgelerini taşıyıp Power Pages belgeleri ile birleştireceğiz.

Bu özellik, bir müşterinin harici API'lere istemci tarafı çağrıları yapmasına ve bunları OAuth örtük onay akışını kullanarak güvence altına almasına olanak tanır. Güvenli erişim belirteçleri elde etmek için bir uç nokta sağlar. Bu belirteçler, OAuth 2.0 örtülü onay akışının ardından yetkilendirme için harici API'ler tarafından kullanılacak kullanıcı kimliği bilgilerini içerecektir. Oturum açmış bir kullanıcının kimlik bilgileri, harici AJAX çağrılarına güvenli bir şekilde iletilir; bu durum, geliştiricilerin kimlik doğrulama bağlamını geçmesine ve ayrıca kullanıcıların API'lerini güvence altına almasına yardımcı olur.

OAuth 2.0 örtük onay akışı, bir istemcinin bir kimlik belirteci almak için çağırabileceği belirteç uç noktalarını destekler.

Özel sertifikalar

OAuth 2.0 örtük onay akışı için varsayılan sertifika kullanımı kullanım dışı bırakılmıştır. OAuth 2.0 uç noktasını kullanırken özel bir sertifika kullanmanız gerekir. Özel sertifikayı yüklemek için Power Platform yönetim merkezini kullanın. Özel sertifikayı yükledikten sonra site ayarlarını aşağıdaki gibi güncelleştirmeniz gerekmektedir:

  1. Portal ayarları 'na gidin ve  Site Ayarları'nı seçin.

  2. Yeni bir ayar oluşturmak için  Yeni'yi seçin.

  3. Mevcut bir ayarı düzenlemek için ızgarada listelenen site ayarını seçin.

  4. Değerleri belirtin:

    • Ad: CustomCertificates/ImplicitGrantflow
    • Web sitesi: İlişkili web sitesi
    • Değer: Özel sertifikayı yönet ekranından yüklenen özel sertifikanın parmak izini kopyalayın ve buraya yapıştırın. Değer, örtük onay akışı için hangi sertifikanın kullanılacağını gösterir.
  5. Kaydet ve Kapat'ı seçin. Belirtilen değerlere sahip Yeni Site Ayarları için genel menü.

Belirteç uç noktası ayrıntıları

Ayrıca, /token uç noktasına bir gönderi isteğinde bulunarak bir belirteç alabilirsiniz. Belirteç uç noktası için URL: <portal_url>/_services/auth/token. Belirteç uç noktası aşağıdaki parametreleri destekler:

Parametre Gerekli mi? Açıklama
client_id Hayır Uç noktayı yetkilendirmek amacıyla bir çağrı yaparken aktarılan bir dize. İstemci kimlik kodunun portal ile kayıtlı olduğundan emin olmalısınız. Aksi takdirde, bir hata görüntülenir. İstemci kimliği, belirteç aud ve appid parametresindeki taleplere eklenir ve istemciler tarafından uygulama için belirtecin döndürüldüğünü doğrulamak için kullanılabilir.
Maksimum uzunluk 36 karakterdir. Yalnızca alfasayısal karakterler ve tire desteklenir.
redirect_uri Hayır Kimlik doğrulama yanıtlarının gönderilebileceği ve alınabileceği portalın URL'si. Çağrıda kullanılan bu belirli client_id için kayıtlı olmalıdır ve kayıtlı ile tam olarak aynı değere sahip olmalıdır.
semt Hayır Talep içine dahil olan bir değer de belirteç yanıtında döndürülür. Kullanmak istediğiniz herhangi bir içerikte bir dize olabilir. Genel olarak, rastgele oluşturulan benzersiz bir değer siteler arası sahte imza isteğini önlemek için kullanılır.
Maksimum uzunluk 20 karakterdir.
nonce Hayır İstemci tarafından gönderilen bir dize değeri, kimlik kodu belirtecinde bir istem olarak sonuçlanan içine dahildir. İstemci daha sonra bu değeri, belirteç yeniden yürütme saldırılarını azaltmak için doğrulayabilir. Maksimum uzunluk 20 karakterdir.
response_type Hayı Bu parametre değer olarak yalnızca token destekler ve uygulamanızın, yetkilendirme uç noktasına ikinci bir istekte bulunmadan hemen yetkilendirme uç noktasından bir erişim belirteci almasına izin verir.

Not

client_id, redirect_uri, state ve nonce parametreleri isteğe bağlı olsa da, tümleştirmelerinizin güvenli olduğundan emin olmak için bunların kullanılması önerilmektedir.

Başarılı yanıt

Belirteç uç noktası durumu ve expires_in'i yanıt başlıkları olarak, belirteci de form gövdesinde döndürür.

Hata yanıtı

Bir belirteç uç noktasındaki hata, JSON belgesi olarak aşağıdaki değerlerle döndürülür:

  • Hata Kimlik Kodu: Hatanın benzersiz kimlik belirleyicisi.
  • Hata iletisi: Bir kimlik doğrulama hatasının temel nedenini tanımlamanıza yardımcı olan belirli bir hata iletisi.
  • Korelasyon Kimlik Kodu: Hata ayıklama amacıyla kullanılacak bir GUID. Tanılama günlüklerini etkinleştirmişseniz, korelasyon kimlik kodu sunucu hata günlüklerinde mevcut olacaktır.
  • Zaman Damgası: Hatanın oluşturulduğu tarih ve saat.

Hata iletisi, oturum açmış kullanıcının varsayılan dilinde görüntülenir. Kullanıcı oturum açmadıysa kullanıcının oturum açması için bir oturum açma sayfası görüntülenir. Örneğin, bir hata yanıtı şu şekilde görünür:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

Uç nokta ayrıntılarını yetkilendir

Not

Yetkilendirme uç noktası kullanımdan kaldırıldı. Kimlik belirtecini almak için Belirteç uç noktası POST isteğini kullanın.]

Uç noktayı yetkilendirmek için URL: <portal_url>/_services/auth/authorize. Yetkilendir uç noktası aşağıdaki parametreleri destekler:

Parametre Gerekli mi? Açıklama
client_id Evet Uç noktayı yetkilendirmek amacıyla bir çağrı yaparken aktarılan bir dize. İstemci kimlik kodunun portal ile kayıtlı olduğundan emin olmalısınız. Aksi takdirde, bir hata görüntülenir. İstemci kimliği, belirteç aud ve appid parametresindeki taleplere eklenir ve istemciler tarafından uygulama için belirtecin döndürüldüğünü doğrulamak için kullanılabilir.
Maksimum uzunluk 36 karakterdir. Yalnızca alfasayısal karakterler ve tire desteklenir.
redirect_uri Evet Kimlik doğrulama yanıtlarının gönderilebileceği ve alınabileceği portalın URL'si. Çağrıda kullanılan bu belirli client_id için kayıtlı olmalıdır ve kayıtlı ile tam olarak aynı değere sahip olmalıdır.
semt Hayır Talep içine dahil olan bir değer de belirteç yanıtında döndürülür. Kullanmak istediğiniz herhangi bir içerikte bir dize olabilir. Genel olarak, rastgele oluşturulan benzersiz bir değer siteler arası sahte imza isteğini önlemek için kullanılır.
Maksimum uzunluk 20 karakterdir.
nonce Hayır İstemci tarafından gönderilen bir dize değeri, kimlik kodu belirtecinde bir istem olarak sonuçlanan içine dahildir. İstemci daha sonra bu değeri, belirteç yeniden yürütme saldırılarını azaltmak için doğrulayabilir. Maksimum uzunluk 20 karakterdir.
response_type Hayı Bu parametre değer olarak yalnızca token destekler ve uygulamanızın, yetkilendirme uç noktasına ikinci bir istekte bulunmadan hemen yetkilendirme uç noktasından bir erişim belirteci almasına izin verir.

Başarılı yanıt

Yetkilendirme uç noktası, aşağıdaki yanıt URL'sini bir parça olarak döndürür:

  • belirteç: Belirteç, bir JSON Web Belirteci (JWT) olarak, portalın özel anahtarı tarafından dijital biçimde imzalanmış şekilde döndürülür.
  • durum: Bir durum parametresi talebe dahilse, aynı değer yanıtta da belirmelidir. Uygulama, talepteki ve yanıttaki durum değerlerinin aynı olduğunu doğrulamalıdır.
  • expires_in: Erişim belirtecinin geçerli olduğu zaman uzunluğu (saniye cinsinden).

Örneğin, başarılı bir yanıt şu şekilde görünür:

GET https://aadb2cplayground.azurewebsites.net/#token=eyJ0eXAiOiJKV1QiLCJhbGciOI1NisIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q&expires_in=3599&state=arbitrary_data_you_sent_earlier

Hata yanıtı

Yetkilendirme uç noktasındaki hata, JSON belgesi olarak aşağıdaki değerlerle döndürülür:

  • Hata Kimlik Kodu: Hatanın benzersiz kimlik belirleyicisi.
  • Hata iletisi: Bir kimlik doğrulama hatasının temel nedenini tanımlamanıza yardımcı olan belirli bir hata iletisi.
  • Korelasyon Kimlik Kodu: Hata ayıklama amacıyla kullanılacak bir GUID. Tanılama günlüklerini etkinleştirmişseniz, korelasyon kimlik kodu sunucu hata günlüklerinde mevcut olacaktır.
  • Zaman Damgası: Hatanın oluşturulduğu tarih ve saat.

Hata iletisi, oturum açmış kullanıcının varsayılan dilinde görüntülenir. Kullanıcı oturum açmadıysa kullanıcının oturum açması için bir oturum açma sayfası görüntülenir. Örneğin, bir hata yanıtı şu şekilde görünür:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

Kimlik kodu belirtecini doğrula

Kullanıcının kimliğini doğrulamak için yalnızca kimlik belirteci almak yeterli değildir; ayrıca belirtecin imzasını doğrulamanız ve uygulamanızın gereksinimlerine göre belirteçteki talepleri doğrulamanız gerekir. Genel belirteç uç noktası, portalın genel anahtarını sağlar, bu da portal tarafından sağlanan belirtecin imzasını doğrulamakta kullanılabilir. Genel belirteç uç noktası için URL: <portal_url>/_services/auth/publickey.

Örtülü izin akışını aç veya kapat

Varsayılan olarak örtülü izin akışı etkindir. Örtülü izin akışını kapatmak istiyorsanız, Bağlayıcı/ImplicitGrantFlowEnabled site ayarını Yanlış olarak ayarlayın.

Bu site ayarı portalınızda mevcut değilse uygun değerle yeni bir site ayarı oluşturmanız gerekir.

Belirteç geçerliliğini yapılandırma

Varsayılan olarak, belirteç 15 dakika süreyle geçerlidir. Bir belirtecin geçerliliğini değiştirmek istiyorsanız, ImplicitGrantFlow/TokenExpirationTime site yarının değerini gerekli değere ayarlayın. Değer saniye cinsinden belirtilmelidir. Maksimum değer 1 saat olabilir ve minimum değer 1 dakika olmalıdır. Hatalı bir değer belirtilirse (örneğin, alfasayısal karakterler), varsayılan değer olan 15 dakika kullanılır. Maksimum değerden fazla veya minimum değerden az bir değer belirtirseniz, maksimum ve minimum değerler varsayılan olarak kullanılır.

Örneğin, belirteç geçerliliğini 30 dakika olarak ayarlamak için ImplicitGrantFlow/TokenExpirationTime site ayarının değerini 1800 olarak ayarlayın. Belirteç geçerliliğini 1 saat olarak ayarlamak için ImplicitGrantFlow/TokenExpirationTime site ayarının değerini 3600 olarak ayarlayın.

Örtülü izin akışı için istemci kimlik kodunu kaydetmek

Bu akışa izin verilmesi için istemci kimlik kodunu portal ile kaydetmeniz gerekir. Bir istemciyi kaydetmek için aşağıdaki site ayarlarını oluşturmanız gerekir:

Site ayarı Value
ImplicitGrantFlow/RegisteredClientId Geçerli istemci kimlik kodu değerlerine bu portal için izin verilir. Değerler bir noktalı virgül ile ayrılmalıdır ve alfasayısal karakterler ve tireler içerebilir. Maksimum uzunluk 36 karakterdir.
ImplicitGrantFlow/{ClientId}/RedirectUri Geçerli yönlendirme URI'lerine belirli istemci kimlik kodları için izin verilir. Değerlerin noktalı virgül ile ayrılması gerekir. Sağlanan URL, portalın geçerli web sayfasının olmalıdır.

Örnek kod

Power Apps portalları API'leriyle OAuth 2.0 Örtük Onay kullanmaya başlamak için aşağıdaki örnek kodu kullanabilirsiniz.

Harici Web API'si ile Portal OAuth belirteci kullanma

ASP.NET tabanlı bir proje olan bu örnek, Power Apps portalları tarafından verilen kimlik belirtecini doğrulamak için kullanılır. Tam örnek burada bulunabilir: Harici bir Web API'si ile Portal OAuth belirteci kullanma.

Belirteç Uç Noktası örneği

Bu örnekte, Power Apps portallarında Belirteç uç noktası kullanılan bir kimlik belirteci getirmek için getAuthenticationToken işlevini nasıl kullanacağınız gösterilmektedir. Örnek burada bulunabilir: Belirteç Uç Noktası örneği.

Not

Belge dili tercihlerinizi bizimle paylaşabilir misiniz? Kısa bir ankete katılın. (lütfen bu anketin İngilizce olduğunu unutmayın)

Anket yaklaşık yedi dakika sürecektir. Kişisel veri toplanmaz (gizlilik bildirimi).