Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
MSAL'yi yeni kullanmaya başladıysanız buradan başlamalısınız. MSAL v1.x'ten geliyorsanız, kodunuzu MSAL v2.x kullanacak şekilde güncelleştirmek için bu kılavuzu izleyebilirsiniz
1. Uygulama kaydını güncelleştirme
Kiracınız için Microsoft Entra yönetim merkezine gidin ve Uygulama Kayıtları’nı gözden geçirin. MSAL 2.x için yeni bir kayıt oluşturabilir veya MSAL 1.x için kullandığınız kayıt için mevcut kaydınızı güncelleştirebilirsiniz .
2. Paketi projenize ekleyin msal-browser
npm kullanarak aşağıdakileri kullanın:
npm install @azure/msal-browser
3. Kodunuzu güncelleştirin
MSAL 1.x'te aşağıdaki gibi bir uygulama örneği oluşturdunuz:
import * as msal from "msal";
const msalInstance = new msal.UserAgentApplication(config);
MSAL 2.x'te, bunu yeni PublicClientApplication nesneyi kullanacak şekilde güncelleştirebilirsiniz.
import * as msal from "@azure/msal-browser";
const msalInstance = new msal.PublicClientApplication(config);
geçirilen yapılandırma nesnesinde bazı küçük farklılıklar olabilir. Nesneye UserAgentApplication daha gelişmiş bir yapılandırma geçiriyorsanız, yeni uygulama nesnesi yapılandırma seçenekleri hakkında daha fazla bilgi için buraya bakın.
İstek ve yanıt nesnesi imzaları değişti. acquireTokenSilent Artık etkileşimli API'lerden ayrı bir nesne imzası var. İstek API'lerini yapılandırma hakkında daha fazla bilgi için lütfen buraya bakın.
MSAL 1.x api'lerinin çoğu değişiklik yapılmadan MSAL 2.x'e iletilmiştir. Bazı işlevler kaldırıldı:
handleRedirectCallbackurlContainsHashgetCurrentConfigurationgetLoginInProgressgetAccountgetAccountStateisCallback
MSAL 2.x'te, hash'ten gelen yanıtın işlenmesi eşzamansız bir işlemdir; çünkü MSAL, yetkilendirme kodunu yanıttan ayrıştırır ayrıştırmaz bir belirteç alışverişi gerçekleştirir. Bu nedenle, yeniden yönlendirme çağrıları gerçekleştirirken MSAL, yeniden yönlendirmenin MSAL tarafından tamamen işlenmesinin ardından çözümlenen bir promise döndüren handleRedirectPromise işlevini sağlar. Yeniden yönlendirme yöntemi kullanılırken, yanıtın işlenmesini ve yeniden yönlendirmeden dönüldüğünde belirteçlerin önbelleğe alınmasını sağlamak için redirectUri olarak kullanılan sayfa handleRedirectPromise uygulamalıdır.
const myMSALObj = new msal.PublicClientApplication(msalConfig);
// Register Callbacks for Redirect flow
myMSALObj.handleRedirectPromise().then((tokenResponse) => {
let accountObj = null;
if (tokenResponse !== null) {
accountObj = tokenResponse.account;
const id_token = tokenResponse.idToken;
const access_token = tokenResponse.accessToken;
} else {
const currentAccounts = myMSALObj.getAllAccounts();
if (!currentAccounts || currentAccounts.length === 0) {
// No user signed in
return;
} else if (currentAccounts.length > 1) {
// More than one user signed in, find desired user with getAccountByUsername(username)
} else {
accountObj = currentAccounts[0];
}
}
const username = accountObj.username;
}).catch((error) => {
handleError(error);
});
function signIn() {
myMSALObj.loginRedirect(loginRequest);
}
async function getTokenRedirect(request) {
return await myMSALObj.acquireTokenSilent(request).catch(error => {
this.logger.info("silent token acquisition fails. acquiring token using redirect");
// fallback to interaction when silent call fails
return myMSALObj.acquireTokenRedirect(request)
});
}
loginPopup, acquireTokenPopup veya acquireTokenSilent çağrıları sırasında Promise'ın çözümlenmesini bekleyebilirsiniz.
const myMSALObj = new msal.PublicClientApplication(msalConfig);
async function signIn(method) {
try {
const loginResponse = await myMSALObj.loginPopup(loginRequest);
} catch (err) {
handleError(error);
}
const currentAccounts = myMSALObj.getAllAccounts();
if (!currentAccounts || currentAccounts.length === 0) {
// No user signed in
return;
} else if (currentAccounts.length > 1) {
// More than one user signed in, find desired user with getAccountByUsername(username)
} else {
accountObj = currentAccounts[0];
}
}
async function getTokenPopup(request) {
return await myMSALObj.acquireTokenSilent(request).catch(async (error) => {
this.logger.info("silent token acquisition fails. acquiring token using popup");
// fallback to interaction when silent call fails
return await myMSALObj.acquireTokenPopup(request).catch(error => {
handleError(error);
});
});
}
Kullanım hakkında daha ayrıntılı bilgi için lütfen oturum açma bilgilerine bakın ve belirteç belgelerini alın .
Yenileme belirteçleri artık belirteç yanıtlarının bir parçası olarak döndürülür ve kitaplık tarafından, etkileşim olmadan veya iframe kullanılmadan erişim belirteçlerini yenilemek için kullanılır. Belirteçleri yenileme hakkında daha fazla bilgi için belirteç ömürleri belgelerine bakın.
Diğer tüm API'ler daha önce olduğu gibi çalışmalıdır. MSAL 2.0'ın çalışma örneğini görmek için varsayılan örneğe göz atmak önerilir.