README.md 5.53 KB
Newer Older
Σταύρος Παπαδάκης's avatar
Σταύρος Παπαδάκης committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
Διαδικτυακή εφαρμογή SLIM για έλεγχο LDAP χρήστη
================================================

Η εφαρμογή ελέγχει με απλό τρόπο εάν ένα χρήστης υπάρχει στον
κατάλογο και επιστρέφει attributes του χρήστη εφόσον ζητηθούν.

# Οδηγίες 

Αντιγράψτε το αρχείο `src\settings.php.dist` σε ένα νέο αρχείο `src\settings.php` 
και τροποποιήστε αναλόγως. 

```php
return [
    'settings' => [
		// ...
        'ldap' => [
			'connectionString' => 'ldap://my.ldap.server',
			'domain' => null, // if AD, provide domain name for login
			'baseSearchDN' => 'cn=Users,dc=YOURCOMPANY,dc=COM',
        ]
	]
];
```

# Εφαρμογή επίδειξης

Η εφαρμογή έχει αναπτυχθεί με το SLIM framework και παρέχει τις παρακάτω 
λειτουργίες. Οι σχετικές path parameters αποδίδονται στις μεθόδους.
Όπου χρησιμοποιούνται επιπλέον παράμετροι, μέσω query string ή post
body, αναφέρονται παρακάτω στις σχετικές παραγράφους περιγραφής των
λειτουργιών.

| HTTP Method | Resource routes | Επιστρεφόμενη τιμή |  Μέθοδος που καλείται στο [Gr\Gov\Minedu\Osteam\Slim\App](src/osteam/App.php) |
|-------------+-----------------+--------------------+--------------------------------------------------------------------------------|
| GET  | /check/{username}/{password}[/{domain}] | JSON μήνυμα | checkCredentials |
| GET  | /get/{username}/{password}[/{domain}]?attributes=[comma separated list of attribute names] | JSON μήνυμα | getInformation |

Η εφαρμογή δημιουργήθηκε με σημείο εκκίνησης το Slim Framework 3 Skeleton Application.
Περισσότερες λεπτομέρειες στη [σελίδα του Slim-Skeleton](https://github.com/slimphp/Slim-Skeleton)

Στο φάκελο [src\osteam](src/osteam) βρίσκεται ο κύριος κώδικας της εφαρμογής και στο
αρχείο [src\routes.php](src/routes.php) καθορίζονται τα σχετικά routes.

**Σημαντικό!** Για να τρέξει η εφαρμογή είναι απαραίτητο μετά τη λήψη της
να εκτελέσετε την εντολή `composer install` μέσα στο ριζικό της φάκελο
(\slim-app).

## Gr\Gov\Minedu\Osteam\Slim\App 

Η κλάση [Gr\Gov\Minedu\Osteam\Slim\App](src/osteam/App.php) παρέχει μεθόδους 
διευκόλυνσης για τον προγραμματιστή ώστε να μπορεί εύκολα να καταναλώσει 
λειτουργίες που αφορούν την πρωτοκόλληση εγγράφων. Οι βασικές λειτουργίες 
περιγράφηκαν παραπάνω. 

**Τεκμηρίωση παρέχεται εντός του [Gr\Gov\Minedu\Osteam\Slim\App](src/osteam/App.php)**

# Λειτουργίες  

> Στα παρακάτω δείγματα κλήσης θεωρείται ότι η εφαρμογή είναι διαθέσιμη στη διεύθυνση: http://generic.local.dev/ldap/

## Επιτυχής έλεγχος στοιχείων

- `http://generic.local.dev/ldap/check/kotsos/kotsos`

Δείγμα απάντησης 
```json
{
	"result": "true"
}
```

## Ανεπιτυχής έλεγχος στοιχείων

- `http://generic.local.dev/ldap/check/kotsos/lauos/domain`

Δείγμα απάντησης 
```json
{
	"result": "false"
}
```

## Επιτυχής άντληση στοιχείων

Πρέπει να δοθεί η παράμετρος `attributes` στο query string:

- `attributes` λίστα ονομάτων πεδίων που ζητούνται, χωρισμένη με κόμματα

Παράδειγμα

- `http://generic.local.dev/ldap/get/kotsos/kotsos?attributes=sn,displayname,memberOf`

Δείγμα απάντησης 
```json
{
	"result": true,
	"data": [
		{
			"sn": [
				{
					"value": "kotsou"
				}
			],
			"displayname": [
				{
					"value": "kotsos kotsou"
				}
			],
			"memberof": [
				{
					"value": "CN=Debugger Users,CN=Users,DC=pdecrete,DC=local"
				},
				{
					"value": "CN=IIS_WPG,CN=Users,DC=pdecrete,DC=local"
				}
			]
		}
	]
Σταύρος Παπαδάκης's avatar
Σταύρος Παπαδάκης committed
119 120
}
```
Σταύρος Παπαδάκης's avatar
Σταύρος Παπαδάκης committed
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159

## Ανεπιτυχής άντληση στοιχείων

- `http://generic.local.dev/ldap/get/kotsos/denyparhei?attributes=sn,displayname,memberOf`

```json
{
	"result": false,
	"reason": "Λανθασμένα στοιχεία πρόσβασης ή λάθος κατά τη σύνδεση"
}
```

- `http://generic.local.dev/ldap/get/kotsos/kotsos`

```json
{
	"result": false,
	"reason": "Δεν έχετε καθορίσει λίστα ονομάτων πεδίων"
}
```

## Άλλες πιθανές απαντήσεις της εφαρμογής

Σε περίπτωση λάθους κατά την αναζήτηση θα επιστραφεί μήνυμα αντίστοιχο με το παρακάτω.

```json
{
	"result": false,
	"reason": "ΕΠΕΞΗΓΗΜΑΤΙΚΟ ΚΕΙΜΕΝΟ"
}
```

Δείγμα απάντησης στο `http://generic.local.dev/ldap/%CE%B1%CF%85%CF%84%CF%8C%20%CE%B4%CE%B5%CE%BD%20%CF%85%CF%80%CE%AC%CF%81%CF%87%CE%B5%CE%B9`
```json
{
	"message": "Δεν αναγνωρίστηκε το αίτημα σας",
	"in": "array (\n  'anythingelse' => 'αυτό δεν υπάρχει',\n)"
}
```