Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk a Azure Active Directory hitelesítési kódtárat (ADAL) használó alkalmazások Microsoft Authentication Library (MSAL) migrálásához szükséges módosításokat ismerteti.
Mind a Microsoft hitelesítési kódtár Javához (MSAL4J), mind az Azure AD Authentication Library for Java (ADAL4J) a Microsoft Entra-entitások hitelesítésére és tokenek Microsoft Entra ID-ból történő lekérésére szolgál. Eddig a legtöbb fejlesztő az Azure AD fejlesztőknek szóló (v1.0-s) verzióját használta ahhoz, hogy különféle identitásokkal, például munkahelyi és iskolai fiókokkal hitelesítsen, az Azure AD Authentication Library (ADAL) segítségével tokenek igénylésével.
Az MSAL a következő előnyöket kínálja:
- Mivel az újabb Microsoft Identitásplatform használja, Microsoft identitások szélesebb halmazát hitelesítheti, például Microsoft Entra identitásokat, Microsoft fiókokat, közösségi és helyi fiókokat Azure AD Business to Consumer (Azure AD B2C) és közösségi vagy helyi ügyfélfiókok Microsoft Entra Külső ID keresztül.
- A felhasználók a legjobb egyszeri bejelentkezést fogják megkapni.
- Az alkalmazás engedélyezheti a növekményes hozzájárulást, valamint támogathatja az új funkciókat, például a feltételes hozzáférést.
Az MSAL for Java az a hitelesítési könyvtár, amelynek használatát a Microsoft identitásplatformmal javasoljuk. Az ADAL4J nem implementál új funkciókat. Minden előremutató törekvés az MSAL javítására összpontosít.
További információt az MSAL-ról a Microsoft Authentication Library áttekintésében talál, amely segít az első lépések megtételében.
Hatókörök, nem erőforrások
Az ADAL4J tokeneket igényel az erőforrásokhoz, míg az MSAL for Java tokeneket igényel hatókörökhöz. Számos MSAL Java osztályhoz hatókörparamétert igényel. Ez a paraméter azoknak a sztringeknek a listája, amelyek deklarálják a kívánt engedélyeket és erőforrásokat. Lásd Microsoft Graph hatóköreit a példahatókörök megtekintéséhez.
Hozzáadhatja a /.default hatókör utótagját az erőforráshoz, hogy segítsen az alkalmazások migrálásában az ADAL-ból az MSAL-be. Az erőforrásérték https://graph.microsoft.comesetében például az egyenértékű hatókör értéke .https://graph.microsoft.com/.default Ha az erőforrás nem szerepel az URL-űrlapon, hanem az űrlap XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXerőforrás-azonosítója, akkor is használhatja a hatókör értékét XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX/.default.
A különböző hatókörökkel kapcsolatos további részletekért tekintse meg a Microsoft Identitásplatform engedélyeit és beleegyezését, valamint az 1.0-s jogkivonatokat elfogadó webes API hatóköreit.
Alaposztályok
Az ADAL4J-ben a AuthenticationContext osztály az Authorityn keresztüli, a Security Token Service-hez (STS), vagyis az engedélyezési kiszolgálóhoz való kapcsolatot jelöli. Az MSAL Java azonban az ügyfélalkalmazások köré van tervezve. Két külön osztályt biztosít: PublicClientApplication és ConfidentialClientApplication az ügyfélalkalmazásokat képviseli. Az utóbbi egy olyan alkalmazást jelöl, ConfidentialClientApplicationamely egy titkos kód, például egy démonalkalmazás alkalmazásazonosítójának biztonságos megőrzésére lett kialakítva.
Az alábbi táblázat bemutatja, hogyan feleltethetők meg az ADAL4J-függvények az új MSAL for Java függvényeinek:
| ADAL4J metódus | MSAL4J metódus |
|---|---|
| acquireToken(String resource, ClientCredential credential, AuthenticationCallback callback) | ClientCredentialParameters |
| acquireToken(String resource, ClientAssertion assertion, AuthenticationCallback callback) | ClientCredentialParameters |
| acquireToken(String resource, AsymmetricKeyCredential credential, AuthenticationCallback callback) | ClientCredentialParameters |
| acquireToken(String resource, String clientId, String username, String password, AuthenticationCallback callback) | UserNamePasswordParameters |
| acquireToken(String resource, String clientId, String username, String password=null, AuthenticationCallback callback) | IntegratedWindowsAuthenticationParameters |
| acquireToken(String resource, UserAssertion userAssertion, ClientCredential credential, AuthenticationCallback callback) | OnBehalfOfParameters |
| acquireTokenByAuthorizationCode() | AuthorizationCodeParameters |
| acquireDeviceCode() és acquireTokenByDeviceCode() | DeviceCodeFlowParameters |
| acquireTokenByRefreshToken() | SilentParameters |
IAccount az IUser helyett
Az ADAL4J felhasználókat kezelt. Bár a felhasználó egyetlen emberi vagy szoftverügynököt jelöl, egy vagy több fiókkal rendelkezhet az Microsoft identitásrendszerben. Előfordulhat például, hogy egy felhasználó több Microsoft Entra ID, Azure AD B2C-vel vagy Microsoft személyes fiókkal rendelkezik.
A Java MSAL a felhasználói felületen keresztül határozza meg a fiók fogalmátIAccount. Ez az ADAL4J-hez képest kompatibilitást sértő változás. Rögzíti azt a tényt, hogy ugyanaz a felhasználó több fiókkal is rendelkezhet, és akár különböző Microsoft Entra könyvtárakban is. Az MSAL Java-verziója pontosabb információkat nyújt vendégforgatókönyvek esetén, mivel a felhasználó alapfiókjára vonatkozó adatok rendelkezésre állnak.
Gyorsítótár-adatmegőrzés
Az ADAL4J nem támogatja a tokengyorsítótárat. A Java MSAL-hez hozzáad egy jogkivonat-gyorsítótárat, amely leegyszerűsíti a jogkivonatok élettartamának kezelését azáltal, hogy lehetőség szerint automatikusan frissíti a lejárt jogkivonatokat, és megakadályozza, hogy a felhasználó szükségtelen kéréseket adjon meg a hitelesítő adatok megadásához, ha lehetséges.
Közös hatóság
Az 1.0-s verzióban, ha a https://login.microsoftonline.com/common hitelesítési szolgáltatót használja, a felhasználók bármely szervezethez tartozó Microsoft Entra-fiókkal bejelentkezhetnek.
Ha a v2.0-ban a https://login.microsoftonline.com/common authorityt használja, a felhasználók bármely Microsoft Entra-szervezetből, vagy akár Microsoft-fiókkal (MSA) is bejelentkezhetnek. Az MSAL for Java esetében, ha a bejelentkezést bármely Microsoft Entra-fiókra szeretné korlátozni, használja a https://login.microsoftonline.com/organizations authorityt (ami megegyezik az ADAL4J viselkedésével). Hitelesítésszolgáltató megadásához állítsa be a authority paramétert a PublicClientApplication.Builder metódusban, amikor példányosít egy PublicClientApplication osztályt.
v1.0-s és v2.0-s tokenek
A v1.0-s végpont (amelyet az ADAL használ) csak v1.0-s tokeneket állít ki.
A v2.0 végpont (amelyet az MSAL használ) v1.0-s és v2.0-s tokeneket adhat ki. A webes API alkalmazásjegyzékének tulajdonsága lehetővé teszi a fejlesztők számára, hogy eldöntse, melyik jogkivonat-verziót fogadják el. Lásd accessTokenAcceptedVersion az alkalmazásjegyzék referenciadokumentációját.
Az 1.0-s és a 2.0-s verziós jogkivonatokkal kapcsolatos további információkért lásd Microsoft Entra hozzáférési jogkivonatokat.
ADAL–MSAL migrálás
Az ADAL4J-ben a frissítési tokenek hozzáférhetők voltak, ami lehetővé tette a fejlesztők számára, hogy gyorsítótárazzák őket. Ezután olyan megoldások engedélyezésére használhatók AcquireTokenByRefreshToken() , mint például az irányítópultokat a felhasználó nevében frissítő, hosszú ideig futó szolgáltatások implementálása, amikor a felhasználó már nincs csatlakoztatva.
A Java-alapú MSAL biztonsági okokból nem teszi hozzáférhetővé a frissítési tokeneket. Ehelyett az MSAL kezeli a tokenek frissítését.
Az MSAL for Java API-ja lehetővé teszi az ADAL4J-vel lekért frissítési tokenek áttelepítését a(z) ClientApplication: RefreshTokenParameters elembe. Ezzel a módszerrel megadhatja a korábban használt frissítési jogkivonatot a kívánt hatókörökkel (erőforrásokkal) együtt. A frissítési token egy újra lesz cserélve, és gyorsítótárazva lesz az alkalmazás általi használatra.
Az alábbi kódrészlet egy egyszerű migrálási kódrészletet jelenít meg egy bizalmas ügyfélalkalmazásban:
String rt = GetCachedRefreshTokenForSignedInUser(); // Get refresh token from where you have them stored
Set<String> scopes = Collections.singleton("SCOPE_FOR_REFRESH_TOKEN");
RefreshTokenParameters parameters = RefreshTokenParameters.builder(scopes, rt).build();
PublicClientApplication app = PublicClientApplication.builder(CLIENT_ID) // ClientId for your application
.authority(AUTHORITY) //plug in your authority
.build();
IAuthenticationResult result = app.acquireToken(parameters);
A IAuthenticationResult rendszer egy hozzáférési jogkivonatot és egy azonosító jogkivonatot ad vissza, míg az új frissítési jogkivonatot a gyorsítótár tárolja. Az alkalmazás a következőt IAccountis tartalmazza:
Set<IAccount> accounts = app.getAccounts().join();
A gyorsítótárban található tokenek használatához hívja meg a következőt:
SilentParameters parameters = SilentParameters.builder(scope, accounts.iterator().next()).build();
IAuthenticationResult result = app.acquireToken(parameters);