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.
Microsoft Entra ID ile etkileşimli kimlik doğrulaması için bir web tarayıcısı gerekir. Ancak, Web tarayıcısı sağlamayan cihazlar ve işletim sistemleri söz konusu olduğunda, Cihaz kodu akışı kullanıcının etkileşimli olarak oturum açmak için başka bir cihaz (örneğin başka bir bilgisayar veya cep telefonu) kullanmasına olanak tanır. Uygulama, cihaz kodu akışını kullanarak belirteçleri özellikle bu cihazlar/işletim sistemi için tasarlanmış iki adımlı bir işlemle alır. Bu tür uygulamalara örnek olarak IoT üzerinde çalışan uygulamalar veya Command-Line araçları (CLI) verilebilir.
Tipik bir cihaz kodu akışı aşağıdaki adımları izler:
Kullanıcı kimlik doğrulaması gerektiğinde, uygulama kullanıcı için bir kod sağlar. Kullanıcıdan, örneğin
https://microsoft.com/deviceloginbir URL'ye gitmek ve kodu girmek için İnternet'e bağlı akıllı telefon gibi başka bir cihaz kullanması istenir. Böylece, web sayfası kullanıcıya onay istemleri ve gerekirse çok faktörlü kimlik doğrulaması içeren normal bir kimlik doğrulama deneyiminde yol gösterir.Kimlik doğrulaması başarılı olduğunda, komut satırı uygulaması gerekli belirteçleri bir arka kanal üzerinden alır ve ihtiyaç duyduğu web API çağrılarını gerçekleştirmek için kullanır.
Constraints
- Cihaz Kodu Akışı yalnızca genel istemci uygulamaları için kullanılabilir
-
PublicClientApplicationiçinde iletilen yetki, aşağıdaki seçeneklerden biri olacak şekilde yapılandırılmalıdır:- Kiracı kimliğini temsil eden GUID veya kiracıyla ilişkilendirilmiş bir etki alanı olan
https://login.microsoftonline.com/{tenant}/formuntenantkiracısı. - Tüm iş ve okul hesapları (
https://login.microsoftonline.com/organizations/)
- Kiracı kimliğini temsil eden GUID veya kiracıyla ilişkilendirilmiş bir etki alanı olan
Microsoft kişisel hesapları henüz Azure AD v2.0 uç noktası tarafından desteklenmemektedir (
/commonveya/consumerskiracılarını kullanamazsınız).
Kod parçacığı
PublicClientApplication app = PublicClientApplication.builder(PUBLIC_CLIENT_ID)
.authority(AUTHORITY)
.build();
Consumer<DeviceCode> deviceCodeConsumer = (DeviceCode deviceCode) -> {
System.out.println(deviceCode.message());
};
CompletableFuture<IAuthenticationResult> future = app.acquireToken(
DeviceCodeFlowParameters.builder(scope, deviceCodeConsumer).build());
future.handle((res, ex) -> {
if(ex != null) {
System.out.println("message - " + ex.getMessage());
return "Unknown!";
}
System.out.println("Access Token - " + res.accessToken());
System.out.println("ID Token - " + res.idToken());
return res;
});
future.join();
Ek bilgiler
Cihaz kodu akışı hakkında daha fazla bilgi edinmek istiyorsanız: