Alur kode perangkat

Autentikasi interaktif dengan MICROSOFT Entra ID memerlukan browser web. Namun, dalam kasus perangkat dan sistem operasi yang tidak menyediakan browser Web, Alur kode perangkat memungkinkan pengguna menggunakan perangkat lain (misalnya komputer lain atau ponsel) untuk masuk secara interaktif. Dengan menggunakan alur kode perangkat, aplikasi mendapatkan token melalui proses dua langkah yang dirancang khusus untuk perangkat/OS ini. Contoh aplikasi tersebut adalah aplikasi yang berjalan di IoT, atau alat Command-Line (CLI).

Alur kode perangkat umum mengikuti langkah-langkahnya:

  1. Setiap kali autentikasi pengguna diperlukan, aplikasi menyediakan kode untuk pengguna. Pengguna diminta untuk menggunakan perangkat lain, seperti smartphone yang terhubung ke internet, untuk membuka URL, misalnya, https://microsoft.com/devicelogin, dan memasukkan kode. Setelah itu selesai, halaman web mengarahkan pengguna melalui pengalaman autentikasi normal, yang mencakup permintaan persetujuan dan autentikasi multifaktor, jika perlu.

  2. Setelah autentikasi berhasil, aplikasi baris perintah menerima token yang diperlukan melalui saluran belakang, dan menggunakannya untuk melakukan panggilan API web yang diperlukan.

Constraints

  • Alur Kode Perangkat hanya tersedia untuk aplikasi klien publik
  • Otoritas yang diteruskan dalam PublicClientApplication perlu dikonfigurasi sebagai salah satu opsi di bawah ini:
    • Bertenant dalam bentuk https://login.microsoftonline.com/{tenant}/, di mana tenant adalah GUID yang merepresentasikan ID tenant atau domain yang terkait dengan tenant.
    • Semua akun kerja dan sekolah (https://login.microsoftonline.com/organizations/)

Akun pribadi Microsoft belum didukung pada endpoint Azure AD v2.0 (Anda tidak dapat menggunakan tenant /common atau /consumers).

Cuplikan kode

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();

Informasi tambahan

Jika Anda ingin mempelajari selengkapnya tentang alur kode Perangkat: