Çok Faktörlü Kimlik Doğrulama & Merkezi Kimlik Yönetimi Örnek Proje
Çok Faktörlü Kimlik Doğrulama & Merkezi Kimlik Yönetimi Örnek Proje
1. PROJE HAKKINDA GENEL BİLGİLENDİRME
Okulda bir proje ödevi olarak hazırlamam gereken bu projeyi burada paylaşarak, ihtiyacı olanların veya incelemek isteyen arkadaşların erişimine sunuyorum. Projenin kaynak dosyalarına bu link üzerinden ulaşabilirsiniz.
Proje üç ana bölümden
oluşmaktadır. Öncelikle bu üç bölüm şu şekilde tanımlanabilir.
1- Görev Yönetim Sistemi: Görev yönetim sistemi bir işletme için personel görevlendirmesi, iş takibi ve proje yönetimi gibi işlemlerin gerçekleştirildiği hayal edilerek tercih edilmiş olan, personellerin sıklıkla kullandığı bir sistemdir.
2- Muhasebe Yönetim Sistemi: Muhasebe yönetim sistemi de görev yönetim sisteminde olduğu gibi bir işletmenin olmazsa olmazı olan bir sistemdir. Bu sebeple ikinci hayali sistem olarak tercih edilmiştir. Muhasebe yönetim sistemi muhasebe personellerinden ziyade diğer personeller de avans talepleri, harcırah bilgileri, maaş ve diğer maddi işlemler için kullanılmaktadır.
3- Kullanıcı Yönetim Sistemi: Kullanıcı yönetim sistemi hazırlanan projenin konu ile alakalı kısmını oluşturmaktadır. Bu sistem üzerinde çok faktörlü doğrulama yöntemi kullanılarak ek güvenlik yöntemleri ile daha güvenli bir ortamda sisteme kayıt işlemleri, oturum kontrol işlemleri, şifre yenileme işlemleri ve hesap doğrulama işlemleri yapılmaktadır.
Muhasebe ve görev yönetim
sistemlerini tam anlamıyla çalışıp görevlendirme işlemleri, cari ve muhasebe
işlemleri yapmamaktadır. Konu ile alakası olmadığı için çalışır hale
getirilmemiştir. Sadece ana sayfa kısmı ve oturum kapatma kısmı aktif hale
getirilerek kullanıcının sistemlere giriş yaptığının veya yapmadığının kontrol
edilmesi hedeflenmiştir.
2. PROJENİN HAZIRLANDIĞI ORTAM, DİL VE VERİ TABANI
·
Proje Visual Studio 2019 üzerinde
hazırlanmıştır.
·
Proje ASP.NET – MVC ile EntityFramework
kullanılarak hazırlanmıştır.
·
Proje için MSSQL veri tabanı tercih edilmiştir.
3. PROJENİN HAZIRLANMA AŞAMALARI
3.1 Planlama Aşaması
Proje hazırlanmaya başlanmadan
önce, öncelikle neler yapılacağına karar verildi. Nasıl bi sistem olması
gerektiği, konuya uygun ne gibi bir sistem olması gerektiği düşünüldü. İş akışı
şu şekilde gerçekleşti.
1- Konu
çok faktörlü kimlik doğrulama ve merkezi kimlik yönetimi olduğu için öncelikle
birden çok bağımsız fakat ilişkili sistem olması gerektiği düşünüldü.
2- Bu
bağımsız fakat ilişkili sistemler ayrı ayrı oturum bilgisi tutmayacağı, tek bir
merkez üzerinden kullanıcı doğrulaması ve oturum kontrolü yapılması gerektiği
düşünüldü.
3- Düşünülen
sistem için minimum iki adet kullanıcıların aktif olarak kullanacağı sistem,
bir tane de bu sistemlerin kullanıcı işlemlerini ve oturum kontrol işlemlerini
sağlayacak kullanıcı yönetim sistemi yapılması gerektiği düşünüldü.
4- Projenin
tasarlanması için hangi ortamda yapılacağı, hangi dil ve veri tabanı tercih
edileceğine karar verilmesi gerektiği için ilgili konular belirlenmeye
başlandı.
5- Hazırlanacak
proje için günümüz şartlarında bir çözüm sunması gerektiği düşünüldü. Masaüstü
sistemler günümüzde değerini kaybetmiş durumda ve her platformdan erişilebilir
değil. Mobil uygulamalar ise günümüz şartlarına uygun sistemler olmasına
rağmen, web tabanlı sistemler kadar aktif olarak tercih edilmemektedir. Bu
sebeple web tabanlı sistemler yapılması gerektiği düşünüldü.
6- Web
tabanlı yapılacak olan bu sistemler, tercihen ASP.NET üzerinde MVC mimarisi
kullanılarak yapılmasına karar verildi.
7- Hazırlanacak
sistemler için veri tabanı olarak MSSQL kullanılmasına karar verildi.
8- Projenin
tasarlanması için gereken bilgilere karar verildi ve sonraki aşama olarak
projenin tasarlanmasına başlanıldı.
3.2. Tasarlama Aşaması
Projenin tasarlanma aşaması için,
öncelikle projenin kağıt üzerinde planlaması yapılmalıdır. Projenin tasarlanmasında sırayla yapılacak
olanlar şu şekilde belirlenmiştir.
1- Kullanılacak
kimlik doğrulama yöntemlerinin belirlenmesi.
2- Kullanılacak
modellerin tasarlanması.
3- Tasarlanan
modellere göre sistemin yapması gereken işlevlerin tasarlanması.
4- Yapması
gereken işlevler için gerekli olan sayfaların tasarlanması.
5- Tasarlanan
işlevler ve sayfalar için uygun sınıf ve fonksiyonların belirlenmesi.
6- Son
olarak ise kağıt üzerinde hazırlanan sistemin gerçekleştirilmesi.
Tasarlama aşamaları, ihtiyaçlar ve gereksinimler belirlendi ve projenin tasarlanmasına başlanıldı.
3.2.1. Kullanılacak kimlik doğrulama yöntemlerinin belirlenmesi.
Hazırlanacak sistemler için
kullanılacak kimlik doğrulama yöntemleri projenin şekil almasında önemli bir
rol oynamaktadır. Oturum kontrolünün sağlanacağı yöntem, oturum açma ve şifre
değiştirme sırasında kullanılacak güvenlik yöntemleri proje üzerinde kritik ve
önemli bir rol oynamaktadır. Bu denli önemli olan bir sistem için yapılan bir
araştırma sonrasında tercih edilecek yöntemler şu şekildedir.
1- Oturum
verilerinin kontrolü ve saklanması için kullanılacak yöntem
System.Web.Security
altında bulunan FormsAuthentication sınıfıdır. Bu yöntem oturum verilerini
istemci üzerinde çerezler olarak saklayarak sadece ilgili cihaz üzerinden
erişime izin vermektedir. Bir oturum başlatmak için GetAuthCookie fonksiyonu
ile yeni bir çerez oluşturuluyor. Daha sonra bir adet FormsAuthenticationTicket
oluşturarak çerezin geçerlilik süresi ve taşınacak veri ekleniyor. Oluşturulan
bu bilet Encrypt fonksiyonu aracılığı ile şifrelenerek bir string haline
getiriliyor. Bu string hale gelen bilet oluşturulan çereze eklenerek ilgili
http response’a iliştirilerek gitmesi gereken alt sisteme yönlendirilecektir.
2- Sisteme
giriş yapmak için kullanılacak doğrulama yöntemleri
Kullanıcının
sisteme giriş yaparken kullanacağı iki adet kimlik belirleme yöntemi
kullanılacaktır. Bu yöntemlerden birincisi kullanıcı şifresi olacaktır.
Kullanıcı sisteme giriş yapmak istediği takdirde kullanıcı adı ve şifresini
girecektir. Eğer ki doğru verileri girmiş ise, o zaman sisteme kayıtlı e-mail
adresine bir doğrulama kodu gönderilecek ve gelen kodu girmesi istenecektir. Bu
sayede 2FA(çift faktörlü kimlik doğrulama ) kimlik doğrulama işlemi gerçekleştirilmiş
olacaktır.
3- Şifre
yenileme işlemi için kullanılacak doğrulama yöntemleri
Kullanıcının
sisteme erişimi kaybettiği zaman mevcut şifresini değiştirmek istemesi
durumunda şifre yenileme talebinde bulunması gerekmektedir. Bu durumda
öncelikle kayıtlı kullanıcı adı veya e-mail adresini girerek doğrulama amacıyla
kayıtlı e-mail adresine gönderilen şifre yenileme bağlantısını açması
gerekmektedir. Daha sonra ikinci aşama olarak eğer ki geçerli bir link ile
gelmiş ise, sisteme kaydolurken oluşturmuş olduğu güvenlik sorusunun cevabını
doğru olarak vermesi gerekecektir. Doğru cevap vermesi halinde yeni bir şifre
oluşturabilecektir.
4- Sisteme
kayıt olurken kullanılacak doğrulama yöntemleri
Sisteme kayıt aşamasında kullanılacak bir adet doğrulama yöntemi bulunmaktadır. Bu doğrulama yöntemi kullanıcı gerekli tüm verilerini girip onaylandıktan sonra e-mail adresine gönderilecek olan bir hesap onaylama linki olacaktır. Bu link aracılığı ile kullanıcı hesabını doğrulayabilecektir. Bu şekilde rastgele e-mail adresi ile sisteme kayıt yaptırmanın önüne geçilmiş olunacaktır.
3.2.2. Kullanılacak Modellerin Tasarlanması
Proje üzerinde kullanılacak model
projenin en önemli kısmını oluşturmaktadır. Çünkü sistemler bu model üzerinde
dönecektir. Bu sebeple hazırlanacak model bir hayli önem arz etmektedir.
Hazırlanacak model için sorulacak
sorular ve gereksinimler şu şekilde oluşturulacaktır.
1- Sistemler
üzerinde bir kayıt işlemi gerçekleşecek mi?
Bu soru
üzerinden yola çıkarak sistem üzerinde gerçekleşecek kayıt işlemleri göz önüne
getirildiğinde bariz olarak oturum açan kullanıcıların kaydının tutulması
gerektiği görülmektedir. Bunun haricinde bir log kaydı tutularak hangi
kullanıcıların işlem yaptığı kayıt altına alınabilir.
2- Herhangi
bir yetkilendirme işlemi gerçekleştirilecek mi?
Şu an üzerinde
çalışılan konuya bakıldığı zaman görülebiliyor ki kullanıcı yönetim sistemi
haricindeki sistemler faal olarak hizmet vermeyeceğinden ve sadece oturum
kontrolü sağlanacağından ötürü herhangi bir yetkilendirme işlemine gerek
duyulmayacaktır.
3- Hazırlanan
modeller üzerinde herhangi bir ilişkilendirme yapılacak mı?
Hazırlanacak
olan log kaydı tutacak model ile kullanıcı bilgilerinin tutulduğu model
arasında bir ilişkilendirme olacak. Bu ilişkilendirme ile log kaydına oturum
açan kullanıcının kaydı iliştirilecek.
4- Hazırlanacak
üç ayrı sistem için birden çok veri tabanı mı olacak, yoksa tek bir veri tabanı
üzerinde mi çalışacak?
Hazırlanacak
sistemler şu an büyük bir proje olmadığından ötürü tek bir veri tabanı üzerinde
çalışacak. Eğer daha büyük bir sistem yazılıyor olsa idi bir web servis
aracılığı ile sadece gerekli olan verilerin talep edileceği, daha genişletilmiş
bir sistem kullanılabilirdi.
Sorulacak ve cevaplanacak temel
konular düşünülüp cevaplar verildikten sonra modeller şu ana kadar planlanan ve
düşünülen akışa göre oluşturulmaya başlanabilir.
İlk olarak sistemlerin bel kemiği
olacak olan kullanıcı modelini oluşturmamız gerekmektedir. Bu model için
kullanılacak değişkenler şu şekilde olacaktır.
1- kullaniciId
(PK,AI,int) : Her kullanıcı için otomatik artan sayı olarak oluşturulacak olan
benzersiz kullanıcı kimlik numarası.
2- adSoyad
(string) : Kullanıcının ad soyad bilgilerini tutacak olan değişken.
3- sifre
(string) : Kullanıcının şifre bilgilerini tutacak olan değişken.
4- kullaniciAdi
(string) : Kullanıcının sisteme giriş yaparken kullanabileceği kullanıcı adını
tutacak olan değişken.
5- email
(string) : Kullanıcının oturum açarken kullanabileceği, şifre yenileme işlemi
ve doğrulama kodlarının gönderileceği e-mail adresini tutacak olan değişken.
6- soru
(string) : Kullanıcının şifresini unuttuğu takdirde yeni bir şifre oluşturması
için kullanılacak olan güvenlik sorusunu tutacak olan değişken.
7- cevap
(string) : Oluşturulacak olan güvenlik sorusunun cevabını tutacak olan
değişken. Kullanıcı eğer bu değişkende yazılı olan doğru cevabı girerse, şifre
doğrulama işlemi sonraki adıma ilerleyecektir.
8- dogrulamaKodu
(string) : MFA için gönderilecek doğrulama kodlarının kaydını tutacak olan
değişken.
9- hesapDurumu
(bool) : Sisteme kaydolan kullanıcının e-mail hesabını doğrulamadan önce pasif
olan hesabını aktifleştirip aktifleştirmediğinin kontrolünün yapılacağı
değişken.
Kullanıcı modeli tanımlandıktan
sonra kullanılacak diğer model olan log modeli şu şekilde tanımlanacak.
1- ipLoginId
(PK,AI,int) : Log kayıtlarının her biri için oluşturulacak benzersiz, otomatik
artan sayı tipinde numaraları tutacak değişken.
2- zaman
(DateTime) : Sisteme giriş zamanının tutulduğu değişken.
3- ipAdresi
(string) : Kullanıcının oturum açarken kullandığı cihaza ait ip adresinin
kaydının tutulduğu değişken.
4- dogrulama
(string) : Kullanıcının oturum kontrolü yapılırken diğer sistemlere gizli
olarak gönderilecek oturum kontrol doğrulama kodunu tutacak değişken.
5- kullanici
(kullanici) : Kullanıcı modelinden türetilmiş olan kullanici tipinde, oturum
açan kullanıcının bilgilerini tutacak olan değişken.
Toplamda iki adet olması
planlanan modeller yukarıda tanımlandığı şekilde oluşturulmuştur. Oluşturulan
bu modeller ile birlikte sonraki aşama olan sistemin yerine getirmesi gereken
işlevlerin belirlenmesine geçilecektir.
3.2.3. Tasarlanan Modellere Göre Sistemin
Yapması Gereken İşlevlerin Tasarlanması
Sistemler için gerekli olan
modeller tanımlandıktan sonra artık çalışacak sistemlerin tasarlanması
gerekmektedir. Bu sistemler için öncelikle ne işlevleri yerine getirmesi
gerektiğine karar verilmelidir. Sistemlerin yerine getirmesi gereken işlevler
aşağıda belirtildiği gibi olacaktır.
1- Kullanıcı
yönetim sistemi
Kullanıcı
yönetim sistemi projenin en önemli sistemi olarak çalışacaktır. Bu sebeple en
yoğun ve en işlevsel sistem bu olacaktır. Bu sistemin genel olarak yerine
getireceği işlevler oturum kontrolüne yönelik işlevler olacaktır. Bunun
haricinde şifre yenileme, kayıt ve hesap doğrulama işlemlerini de yapacaktır.
Bu işlemler için gerekli tanımlamalar ve kullanılacak yöntemler aşağıda
tanımlanacaktır.
a.
Yeni kullanıcı kaydı
Sistemin ilk adımı olarak her sistemde olduğu gibi
yeni bir kullanıcı oluşturulması gerekmektedir. Yeni bir kullanıcı
oluşturulurken de oluşturulan modele istinaden bir kayıt formu oluşturulmalı.
Bu form üzerinde ad soyad, e-mail ve kullanıcı adı ilk adımda alınması gereken
bilgiler olacaktır. Çünkü alınan kullanıcı adı ve e-mail adreslerinin sistem
üzerinden kontrol edilerek mevcut herhangi bir kayıtla eşleşmediğinin doğrulanması
gerekmektedir. Doğrulama işlemi tamamlandıktan sonra ikinci aşamaya geçerek
güvenlik sorusu, soru cevabı ve kullanıcı şifresinin talep edilmesiyle beraber
form gönderildikten sonra kayıt işleminin tamamlanması için kullanıcının girmiş
olduğu e-mail adresine bir doğrulama linki gönderilmesi gerekmektedir.
Gönderilen link vasıtası ile kullanıcı hesabını doğrulayarak kayıt işlemini
tamamlamış olacaktır.
Bu senaryoya göre oluşturulması gereken fonksiyonlar
şu şekilde sıralanabilir.
i.
JsonResult girisBilgileriKontrol( string e-mail,
string kullaniciAdi, string adSoyad )
Bu fonksiyon ile kayıt formundan ilk adımda girilen
bilgilerin sistemde bir kullanıcıya işaret edip etmediğinin, boş olup
olmadığının kontrolü yapılacaktır. Doğru olması halinde sonraki aşamaya, hatalı
olması durumunda hata durumuna göre json paketi halinde bir hata kodu
döndürmesi hedeflenmektedir.
ii.
string MailGonder(string email, string konu,
string mesaj)
Bu fonksiyon ile kullanıcı ile iletişime geçerek
gerekli e-mail gönderme işlemleri gerçekleştirilecektir. Kullanıcı kaydı
işlemleri için hesap doğrulama linkinin gönderilmesi işlemini
gerçekleştirirken, giriş yapma ve şifre yenileme kısımlarında da
kullanılacaktır.
iii.
ActionResult dogrula(int kullaniciId, string
dogrulamaKodu)
Bu fonksiyon vasıtası ile kayıt olan kullanıcıların
hesap doğrulama işlemleri gerçekleştirilecektir. Kayıtlı e-mail adresine
gönderilen link ile doğru verilere sahip olduğu takdirde hesabının doğrulama
işlemi gerçekleştirilerek giriş sayfasına yönlendirilecektir. Aksi takdirde bir
hata mesajı üreterek hatalı veya süresi geçmiş bir linke sahip olduğu
belirtilecektir.
b.
Sisteme giriş
Doğrulama gerektiren sistemlerde olmazsa olmaz olan
sisteme giriş sayfası üzerinden adından da anlaşılacağı üzere hazırlanan
sistemlerde oturum açma işlemi gerçekleştirilecektir. Bu işlemin senaryosu şu
şekilde belirtilebilir.
Öncelikle sisteme kaydolmuş ve hesap onayını gerçekleştirmiş
olan kullanıcı, sistemde oturum açmak için kullanıcı adı veya e-mail adresi ve
şifresini form üzerinden girerek giriş yapmak için doğrulamanın yapılacağı
fonksiyona iletiyor. Fonksiyon tarafından okunan kullanıcı adı ve şifre doğru
olduğu takdirde kayıtlı e-mail adresine bir doğrulama kodu gönderiliyor.
Kullanıcı adı veya şifresi yanlış olduğu takdirde ise bir hata mesajı
üretilerek kullanıcıya bilgi veriliyor.
Kullanıcı doğrulandıktan ve kayıtlı e-mail adresine
doğrulama kodu gönderildikten sonra sisteme giriş sayfası ikinci aşamaya
geçerek e-mail adresine gönderilen doğrulama kodunu isteyecektir. Girilen kod ilgili fonksiyon tarafından kontrol
edilerek doğru iste sisteme yönlendirecek, hatalı iste bir hata mesajı üreterek
kullanıcıya hata bildirimi yapacaktır.
Bu senaryoya göre oluşturulması gereken fonksiyonlar
şu şekilde sıralanabilir.
i.
JsonResult girisKontrol(string kullaniciAdi,
string sifre, string dogrulamaKodu, string durum)
Bu fonksiyon üzerinden sisteme giriş yapma ile alakalı tüm işlemler gerçekleştirilecektir. Fonksiyon üzerinde parametre ile alınan değişkenlerden durum değişkeni, “birinci” ve “ikinci” şeklinde iki değer alacaktır. Gelen değer “birinci” olduğu takdirde kullanıcı adı ve şifre kontrolü yapacak, doğru ise kayıtlı e-mail adresine sistem tarafından üretilecek karmaşık bir doğrulama kodu gönderecek ve aynı zamanda bu kodu bir session içerisinde kullanıcıdan alacağı değerle karşılaştırmak için tutacak. Buraya kadar bir hata oluşmamışsa eğer giriş işleminin ikinci aşamasına geçmek için onay, hatalı bir durum oluşmuş ise hata mesajı döndürecek. Eğer ki durum değişkeni “ikinci” değerini almış ise o zaman giriş işleminin ikinci aşaması çalışmış demektir. Bu durumda sistem kullanıcı tarafından girilen doğrulama kodunu session içerisinde tuttuğu doğrulama kodu ile karşılaştırarak doğru olduğu takdirde kullanıcıyı sisteme yönlendirecektir. Eğer ki hatalı ise kullanıcıya bir hata mesajı döndürecektir.
ii.
rastgeleKod()
Bu fonksiyon ile sistem üzerinde tahmin edilmesi güç
rastgele kodlar üretilecek. Üretilecek kodlar 6 karakterden oluşacak ve
klavyede bulunan 32 harf ve 10 rakamdan rastgele seçerek oluşturulacak. Yani
toplamda 746 farklı şifre oluşturulmuş olacaktır.
c.
Şifre yenileme
Şifre yenileme işlemi, sisteme üye olan kullanıcıların
giriş yapmak için kullandıkları doğrulama yöntemlerinden birisi olan
şifrelerini sıfırlamak için kullanacağı bir işlemdir. Bu işlemin senaryosu şu
şekilde belirtilebilir.
Sisteme üye olmuş ve hesabını onaylatmış bir
kullanıcı, eğer ki şifresini unutmuş ise şifre yenileme sayfası üzerinden şifre
sıfırlama yapabilir. Şifre sıfırlamak için kullanıcı adını veya e-mail adresini
giren kullanıcının bilgileri ilgili fonksiyon tarafından kontrol edilerek, eğer
ki öyle bir kullanıcı var ise kullanıcının güvenlik sorusunu ekrana göndererek kullanıcıdan
bu güvenlik sorusunun cevabı beklenmektedir. Kullanıcı tarafından gönderilen
cevap doğru olduğu takdirde yeni şifre oluşturması talep edilecektir ve şifre
sıfırlama işlemi tamamlanmış olacaktır.
2- Görev
yönetim sistemi ve muhasebe yönetim sistemi
a-
Sistemden çıkış
Sistemden çıkış yapma işlemi, oturum açmış olan
personelin oturumunu sonlandırmak için kullanılacak olan işlemdir.
b-
Oturum kontrolü
Oturum kontrol işlemi, kullanıcı yönetim sistemi tarafından
oturum açmış olan kullanıcıların oturum verilerini okuyarak mevcut sistemde de
oturum verilerini sürdürmeyi hedeflemektedir.
3.2.4. Yapması gereken işlevler için gerekli olan sayfaların
tasarlanması.
Hazırlanacak projede yukarıda tanımlanan işlevlerin
bazılarının görsel bir arayüze ihtiyaç duymamasına rağmen, bazıları bir form
üzerinden kullanıcı ile iletişime geçmektedir. Bu sebepten ötürü yukarıda
tanımlanan işlevlerden gerekli olanları aşağıda tanımlayacağım.
1- Kullanıcı
Yönetim Sistemi
a-
Login
Bu sayfa üzerinden kullanıcıların sisteme giriş yapması, hedeflenmektedir. Yukarıda belirtilen senaryo üzerinden kullanıcının doğrulanıp sisteme erişiminin sağlanması bu sayfa üzerinden gerçekleştirilecektir.
b-
Kaydol
Kaydol sayfası üzerinden sisteme yeni kullanıcılar
dahil edilecektir. İki aşamalı olarak çalışacak olan kaydol sayfasında ilk
aşamada sadece ad soyad, kullanıcı adı ve e-mail adresi alınarak, sistemde
kayıtlı olan farklı bir kullanıcıya işaret edip etmediği kontrol edilecektir.
İkinci aşamada ise kayıt için herhangi bir engel teşkil etmeyen kullanıcı
bilgilerine ek olarak güvenlik sorusu ile cevabı ve kullanıcı şifresi girilerek
kayıt işlemi tamamlanacaktır.
c-
Şifre Yenile
Şifre yenileme sayası üzerinden sisteme üye olmuş ve
şifresini kaybetmiş kullanıcılar için şifresini değiştirme imkanı
sunulmaktadır. İki ayrı sayfa olarak çalışacak olan şifre yenileme işlemi için
ilk aşamada sisteme kayıtlı olan kullanıcı adı veya e-mail adresi girilerek
mevcut bir kullanıcı olup olmadığı kontrol edilir. Eğer ki uygun bir kullanıcı
var ise sisteme kayıtlı e-mail adresine bir şifre yenileme bağlantısı
gönderilir.
d-
Şifre Değiştir
Şifre değiştirme sayfası kullanıcının e-mail adresine
gönderilen şifre yenileme bağlantısının yönlendirileceği sayfadır. Bu sayfa
üzerinde kullanıcının yapacağı iki işlem vardır. Öncelikle hesabına daha önce
kaydetmiş olduğu güvenlik sorusunun doğru cevabını vermek. Doğru cevabı verdiği
takdirde ikinci aşamaya geçerek kullanıcının yeni şifresini girmesi talep
edilecektir. Kullanıcı yeni şifresini girdikten sonra işlem tamamlanarak
sisteme giriş yapmak üzere giriş yap sayfasına yönlendirilir.
e-
Doğrula
Doğrula sayfası görsel bir ara yüze sahip olmamakla
birlikte sisteme yeni kaydolmuş kullanıcıların hesaplarının doğrulamasının
yapıldığı sayfadır. Kullanıcı bu sayfa üzerinden doğrulama işlemi yapılarak
giriş yap sayfasına yönlendirilir.
f-
Yönlendir
Yönlendir sayfası da bir görsel ara yüzü bulunmayan bir sayfadır. Bu sayfanın vazifesi, giriş yap sayfası üzerinden oturum açan kullanıcının gitmesi gereken alt sisteme yönlendirmesini gerçekleştirmektir. Giriş yap sayfası üzerinden gelen bilgiler doğrultusunda yönlendirme işlemini gerçekleştirerek doğrudan ilgili alt sistemin ana sayfasına yönlendirme yapmaktadır.
2- Muhasebe
ve Görev Yönetim Sistemi
a-
Ana sayfa
Ana sayfa adından da anlaşılacağı üzere muhasebe ve
görev yönetim sistemlerinin açılış sayfası olacaktır. Kullanıcı oturum açmamış
ise kayıt ve oturum açma sayfalarına yönlendirmek için butonlar bulunacak. Eğer oturum açılmış ise, oturum açıldığını belirtmek için ekran üzerinde
“Hoş geldin { Kullanıcı ad soyad }.” Şeklinde bir karşılama mesajı verilecektir
ve aynı zamanda hemen alt tarafta sistemden çıkış yapmak için kullanılacak olan
çıkış yap butonu bulunacaktır.
b-
Çıkış Yap
Çıkış yap sayfası üzerinden kullanıcılar mevcut oturumlarını
sonlandıracaklardır. Bu sayede sistemdeki diğer alt sistemlerden de çıkış
yapmış olacaklardır. Ve daha sonra tekrar giriş yapmak üzere giriş yap
sayfasına yönlendirileceklerdir.
3.2.5. Tasarlanan işlevler ve sayfalar için
uygun sınıf ve fonksiyonların belirlenmesi.
Hazırlanacak sistemlerde
kullanılacak ve tekrar eden birçok işlem için tekrar tekrar aynı kodun
yazılmasının önüne geçmek için tekrar eden içerikleri bir fonksiyon içerisine,
eğer daha karmaşık bir sistemse bir sınıf altında toplanmış fonksiyonlar ile
yapılacak işlemler kontrol altına alınarak daha düzenli bir sistem elde edilmiş
olacaktır. Bu sebeple tekrar eden veya sistemin geliştirildiği düşünüldüğünde
tekrar etmesi olası olan işlemler kontrol altına alınmıştır. Tekrar etmesi
olası olan işlemler için fonksiyon haline getirilen komutlar aşağıda
verilmiştir.
1- Kullanıcı
Yönetim Sistemi
a-
public string MailGonder( string EMail, string
Konu, string Mesaj )
Bu fonksiyon ile SMTPClient sınıfını kullanarak bir
e-mail oluşturarak istenilen herhangi bir e-mail adresine e-mail
gönderilebilir. İşlem sonucu string bir değişken olarak döndürülecek ve e-mail
gönderilip gönderilmediği öğrenilmiş olacak.
b-
public string ipAl()
Bu fonksiyon vasıtası ile sistemde oturum açacak olan
kullanıcıların ip adresleri alınacak. Bu işlem için gelen http isteği
içerisinde bulunan kullanıcının ip adresi alınacaktır. Ekstra doğruluk için
yönlendirme yapılan ip adresleri üzerinde de kontrol yapılarak son ip adresine
ulaşılmış olacaktır.
c-
public string rastgeleKod()
Bu fonksiyon 6 karakterden oluşan rastgele doğrulama kodları oluşturmaktadır. Oluşturulan kodlar klavyede bulunan 32 küçük, 32 büyük harf ve 10 adet sayı karakteri arasından rastgele olarak seçilecektir. Rastgele olarak seçilen bu kodlar toplamda 74 karakter arasından seçileceğinden dolayı 746 farklı kombinasyon oluşturulmuş olacaktır.
2- Muhasebe
ve Görev Yönetim Sistemi
a-
public bool login()
Bu fonksiyon kullanıcıların oturum kontrolünü yapacak olan
ana fonksiyon olacaktır. Sistem her sayfa yenilediği zaman çalışarak oturum
kontrolünü ve süresini sağlamış olacaktır. Oturum sonlandığı zaman “false”
değerini, oturum devam ettiği takdirde “true” değerini döndürecektir. Oturum
sonlandığı takdirde giriş yapma sayfasına yönlendirilecektir.
3.2.6. Kağıt üzerinde hazırlanan sistemin gerçekleştirilmesi.
Planlanması ve tasarlanması tamamlanan sistemin
gerçekleştirilmesi işlemine başlanacaktır. Hazır olan iş akışı, fonksiyonlar ve
modellerden yola çıkarak nasıl bir sistem gerçekleştirileceği açık ve net
olduğu için hızlı bir süreçte sistem gerçekleştirilecektir ve proje
tamamlanacaktır.