Install Web App

Yii

Belajar Framework Yii #23 | Security : Pengelolaan autentikasi dan otorisasi dengan Yii

profil-penulis

Irgo Adityawan

15 Juni 2023

Keamanan adalah aspek kritis dalam pengembangan aplikasi web, terutama ketika datang ke pengelolaan autentikasi dan otorisasi. Yii Framework menyediakan alat dan fitur yang kuat untuk membantu Anda mengimplementasikan langkah-langkah keamanan ini dengan efisien. Dalam artikel ini, kita akan membahas cara mengelola autentikasi dan otorisasi dalam Yii.

Autentikasi dalam Yii

Autentikasi adalah proses verifikasi identitas pengguna. Yii menyediakan berbagai metode autentikasi, termasuk autentikasi berbasis sesi (session-based) dan autentikasi berbasis token.

Autentikasi Berbasis Sesi (Session-Based)

Autentikasi berbasis sesi adalah cara paling umum dalam mengelola autentikasi dalam Yii. Ini melibatkan identifikasi pengguna dengan mengonfigurasi komponen user dalam berkas konfigurasi Anda.

return [
    // ...
    'components' => [
        // ...
        'user' => [
            'identityClass' => 'app\models\User', // Kelas model pengguna
            'enableAutoLogin' => true, // Autentikasi otomatis
        ],
    ],
    // ...
];

Dengan konfigurasi di atas, Yii akan secara otomatis menangani autentikasi pengguna dan mengelola sesi pengguna.

Autentikasi Berbasis Token

Autentikasi berbasis token adalah cara alternatif untuk mengelola autentikasi dalam Yii, biasanya digunakan dalam aplikasi RESTful. Dalam metode ini, pengguna harus menyertakan token otentikasi dalam setiap permintaan.

// Contoh konfigurasi autentikasi berbasis token
'components' => [
    // ...
    'user' => [
        'identityClass' => 'app\models\User', // Kelas model pengguna
        'enableSession' => false,
        'enableAutoLogin' => false,
        'identityCookie' => ['name' => '_identity-api', 'httpOnly' => true],
    ],
],

Otorisasi dalam Yii

Otorisasi adalah proses penentuan hak akses pengguna ke berbagai bagian aplikasi Anda. Yii mendukung otorisasi berdasarkan peran (role-based) dan izin (permission-based).

Otorisasi Berdasarkan Peran (Role-Based)

Dalam otorisasi berdasarkan peran, pengguna diberikan peran tertentu yang memungkinkan mereka mengakses sumber daya (contoh: admin, editor, pengguna biasa).

// Contoh definisi peran dalam Yii
$auth = Yii::$app->authManager;

$admin = $auth->createRole('admin');
$editor = $auth->createRole('editor');
$user = $auth->createRole('user');

$auth->add($admin);
$auth->add($editor);
$auth->add($user);

// Memberikan peran ke pengguna
$auth->assign($admin, 1); // Mengasumsikan ID pengguna 1 adalah admin
Otorisasi Berbasis Izin (Permission-Based)

Dalam otorisasi berbasis izin, pengguna diberikan izin tertentu yang mengizinkan mereka untuk melakukan tindakan tertentu.

// Contoh definisi izin dalam Yii
$auth = Yii::$app->authManager;

$createPost = $auth->createPermission('createPost');
$editOwnPost = $auth->createPermission('editOwnPost');
$deleteOwnPost = $auth->createPermission('deleteOwnPost');

$auth->add($createPost);
$auth->add($editOwnPost);
$auth->add($deleteOwnPost);

// Memberikan izin ke pengguna
$auth->addChild($editor, $createPost);
$auth->addChild($editor, $editOwnPost);
$auth->addChild($editor, $deleteOwnPost);

Menyaring Akses

Setelah Anda mendefinisikan otorisasi, Anda dapat menyaring akses ke bagian-bagian aplikasi yang memerlukan izin tertentu. Contohnya, untuk menyaring akses ke aksi (action) tertentu dalam controller:

public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::class,
            'rules' => [
                [
                    'actions' => ['admin'],
                    'allow' => true,
                    'roles' => ['admin'],
                ],
                [
                    'actions' => ['edit'],
                    'allow' => true,
                    'permissions' => ['editOwnPost'],
                    'roleParams' => function () {
                        return ['post' => Post::findOne(Yii::$app->request->get('id'))];
                    },
                ],
            ],
        ],
    ];
}

Dalam contoh di atas, kita menggunakan AccessControl untuk menyaring akses ke aksi-aksi admin dan edit. Aksi admin memerlukan peran admin, sementara aksi edit memerlukan izin editOwnPost dengan parameter post yang sesuai.

Kesimpulan

Pengelolaan autentikasi dan otorisasi adalah aspek penting dalam pengembangan aplikasi web yang aman. Yii Framework menyediakan alat dan fitur yang kuat untuk membantu Anda mengimplementasikan langkah-langkah keamanan ini dengan efisien. Dengan pemahaman ini, Anda dapat mengembangkan aplikasi Yii yang lebih aman dan terstruktur.

Artikel Lainnya Dengan Kategori Terkait :


1. Belajar Framework Yii #01 | Pengertian Framework Yii dan Kelebihannya

2. Belajar Framework Yii #02 | Alur Kerja Umum Yii dan MVC

3. Belajar Framework Yii #03 | Instalasi Yii Framework

4. Belajar Framework Yii #04 | Pemahaman tentang Model-View-Controller (MVC) pada Framework Yii

5. Belajar Framework Yii #05 | Model Yii : Membuat Model

6. Belajar Framework Yii #06 | Model Yii : Validasi Data

7. Belajar Framework Yii #07 | Model Yii : Menghubungkan Database

8. Belajar Framework Yii #08 | View Yii : Membuat Tampilan Yii

9. Belajar Framework Yii #09 | View Yii: Widget Bawaan Yii

10. Belajar Framework Yii #10 | View Yii: Membuat Tampilan Dinamis

11. Belajar Framework Yii #11 | Controller Yii: Membuat Action dalam Controller

12. Belajar Framework Yii #12 | Controller Yii: Menggunakan Filter

13. Belajar Framework Yii #13 | Controller Yii: Memahami Request

14. Belajar Framework Yii #14 | Routing Yii : Memahami Konfigurasi

15. Belajar Framework Yii #15 | Routing Yii : Membuat rute khusus

16. Belajar Framework Yii #16 | Routing Yii : Memahami Konsep pretty's URL

17. Belajar Framework Yii #18 | Menggunakan ActiveRecord untuk manipulasi data

18. Belajar Framework Yii #19 | Membuat kueri kompleks dengan Active Record

19. Belajar Framework Yii #20 | Membuat dan Mengelola Formulir dengan Yii

20. Belajar Framework Yii #21 | Menggunakan validasi pada formulir Yii

21. Belajar Framework Yii #22 | Menangani input dan output form dengan Yii

22. Belajar Framework Yii #23 | Security : Pengelolaan autentikasi dan otorisasi dengan Yii

23. Belajar Framework Yii #24 | Security : Implementasi Fitur Keamanan Yii

24. Belajar Framework Yii #25 | Memahami penggunaan tema (themes) dalam Yii

25. Belajar Framework Yii #26 | Menggunakan ekstensi Yii dan membangun ekstensi kustom

26. Belajar Framework Yii #27 | Membuat API menggunakan Yii

27. Belajar Framework Yii #28 | Melakukan pengujian unit dengan PHPUnit

28. Belajar Framework Yii #29 | Menggunakan alat bantu debugging dalam Yii

29. Belajar Framework Yii #30 | Menangani error dan log dalam Yii

30. Belajar Framework Yii #31 | Memahami caching dalam Yii untuk meningkatkan performa

31. Belajar Framework Yii #32 | Menyesuaikan konfigurasi aplikasi Yii untuk kebutuhan khusus

32. Belajar Framework Yii #33 | Menerapkan praktik pengembangan yang efisien dalam Yii

33. Belajar Framework Yii #34 | Mengoptimalkan query database dengan Active Record di Yii

34. Belajar Framework Yii #35 | Mempercepat waktu muat halaman dengan menggunakan asset caching di Yii

35. Belajar Framework Yii #36 | Menyesuaikan URL routing untuk meningkatkan SEO pada Yii

36. Belajar Framework Yii #37 | Mengoptimalkan penggunaan memori dalam aplikasi Yii

37. Belajar Framework Yii #38 | Meningkatkan performa dengan penggunaan Gii dalam pembangunan kode di Yii

38. Belajar Framework Yii #39 | Menggunakan teknik lazy loading untuk meningkatkan kecepatan aplikasi Yii

39. Belajar Framework Yii #40 | Menerapkan teknik penggunaan indeks dan optimasi tabel database pada Yii.

40. Mempelajari Framework Yii #17 Menghubungkan Yii dengan database

Masuk Terlebih dahulu untuk berkomentar

Paling baru
Lihat Lainnya