MSAL.js ile istem davranışı
MSAL.js, oturum açma veya belirteç isteği yöntemlerinin bir parçası olarak bir istem değeri geçirilmesine izin verir. Uygulama senaryonuza bağlı olarak, istek nesnesinde istem parametresini ayarlayarak bir istek için Microsoft Entra istemi davranışını özelleştirebilirsiniz:
import { PublicClientApplication } from "@azure/msal-browser";
const pca = new PublicClientApplication({
auth: {
clientId: "YOUR_CLIENT_ID"
}
});
const loginRequest = {
scopes: ["user.read"],
prompt: 'select_account',
}
pca.loginPopup(loginRequest)
.then(response => {
// do something with the response
})
.catch(error => {
// handle errors
});
Desteklenen istem değerleri
Microsoft kimlik platformu kimlik doğrulaması yaparken aşağıdaki istem değerleri kullanılabilir:
Parametre | Davranış |
---|---|
login |
Kullanıcıyı bu istekte kimlik bilgilerini girmeye zorlar ve çoklu oturum açmayı olumsuzlar. |
none |
Kullanıcıya etkileşimli bir istem sunulmamasını sağlar. İstek, çoklu oturum açma kullanılarak sessizce tamamlanamazsa, Microsoft kimlik platformu bir login_required veya interaction_required hatası döndürür. |
consent |
Kullanıcı oturum açtığında OAuth onayı iletişim kutusunu tetikler ve kullanıcıdan uygulamaya izin vermesini ister. |
select_account |
Oturumdaki tüm hesapları listeleyen bir hesap seçimi deneyimi veya tamamen farklı bir hesap seçme seçeneği sağlayarak çoklu oturum açmayı kesintiye uğratır. |
create |
Dış kullanıcıların hesap oluşturmasına olanak sağlayan bir kaydolma iletişim kutusu tetikler. Daha fazla bilgi için bkz. Self servis kaydolma |
MSAL.js desteklenmeyen istem değerleri için bir invalid_prompt
hata oluşturur:
invalid_prompt_value: Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest Given value: my_custom_prompt
Varsayılan istem değerleri
MSAL.js'nin kullandığı varsayılan istem değerleri aşağıda gösterilmiştir:
MSAL.js yöntemi | Varsayılan istem | İzin verilen istemler |
---|---|---|
loginPopup |
Yok | Tümü |
loginRedirect |
Yok | Tümü |
ssoSilent |
none |
Yok (yoksayıldı) |
acquireTokenPopup |
Yok | Tümü |
acquireTokenRedirect |
Yok | Tümü |
acquireTokenSilent |
none |
Yok (yoksayıldı) |
Dekont
İstemin protokol düzeyinde bir parametre olduğunu ve istenen kimlik doğrulama davranışını kimlik sağlayıcısına işaret ettiğini unutmayın. MSAL.js davranışını etkilemez ve MSAL.js hizmetinin nihai olarak isteği nasıl işleyeceğini denetlemez. Çoğu durumda, Microsoft Entra Id isteği yerine getirmeye çalışır. Bu mümkün değilse, bir hata yanıtı döndürebilir veya verilen istem değerini tamamen yoksayabilir.
prompt=none ile etkileşimli istekler
Genellikle, sessiz bir istekte bulunmanız gerektiğinde, sessiz bir MSAL.js yöntemi (, ) kullanın ve etkileşimli bir yöntemle (ssoSilent
loginPopup
, loginRedirect
acquireTokenSilent
, , acquireTokenPopup
acquireTokenRedirect
) login_required veya interaction_required hataları işleyin.
Ancak bazı durumlarda istem değeri none
, sessiz kimlik doğrulaması gerçekleştirmek için etkileşimli bir MSAL.js yöntemiyle birlikte kullanılabilir. Örneğin, bazı tarayıcılardaki üçüncü taraf tanımlama bilgisi kısıtlamaları nedeniyle, ssoSilent
Microsoft Entra Id ile etkin bir kullanıcı oturumuna rağmen istekler başarısız olur. Çözüm olarak, istem değerini none
gibi loginPopup
etkileşimli bir isteğe geçirebilirsiniz. MSAL.js daha sonra Microsoft Entra Id için bir açılır pencere açar ve Microsoft Entra Id mevcut oturum tanımlama bilgisini kullanarak istem değerini kabul eder. Bu durumda kullanıcı kısa bir açılır pencere görür ancak kimlik bilgisi girişi istenmez.