Кіріспе

Java Authentication and Authorization Service, немесе JAAS, "Jazz" деп айтылады, стандартты Pluggable Authentication Module (PAM) ақпараттық қауіпсіздік құрылымының Java-дағы іске асырылуы. JAAS Java Platform, Standard Edition 1.3-ке қосымша кітапхана ретінде енгізілді және 1.4 нұсқасында интеграцияланды. JAAS-тың басты мақсаты – пайдаланушыны куәландыру процесін бөліп, оны тәуелсіз басқару мүмкіндігін беру. Ескі куәландыру механизмі кодтың қайдан келгені және оған кім қол қойғаны туралы ақпаратты қамтитын болса, JAAS кодты кім іске қосып жатыр деген мәліметті қосады. Тексеру векторларын кеңейту арқылы JAAS куәландыру және рұқсаттама модульдерін қажет ететін Java қолданбаларының қауіпсіздік архитектурасын жетілдіреді.

Жүйеге кіру модульдері

Жүйеге кіру модульдері негізінен аутентификациямен айналысады, авторизациямен емес, және JAAS-тың кеңінен қолданылатын компонентін құрайды. Жүйеге кіру модулі javax.security.auth.spi. LoginModule интерфейсін іске асыруды қажет етеді, ол келесі әдістерді анықтайды:

Ескерту: Субъект – жүйеге кіруге тырысатын пайдаланушы. initialize: Жүйеге кіру модулін инициализациялау коды, әдетте кластың тиісті өрістеріне берілген параметрлерді сақтау арқылы. login: javax.security.auth.Callback интерфейсін іске асыратын объект арқылы ұсынылған деректемелерді тексеру (мысалы, деректер базасымен салыстыру). Бұл әдіс пайдаланушыдан логині мен паролін сұрауы немесе бұрын алынған мәліметтерді пайдалануы мүмкін. Егер жарамсыз деректемелер берілсе, javax.security.auth.login.FailedLoginException тасталуы керек екенін ескеру маңызды (false қайтарудың орнына, бұл жүйеге кіру модулін елемеу керектігін көрсетеді, бұл аутентификацияның сәтті аяқталуына мүмкіндік береді). commit: Субъектінің кімдігі тексерілді, сондықтан осы әдістегі код сәтті аутентификацияланған субъект үшін Principal және Топтарды (рольдерді) орнатады. Бұл әдіс корпоративтік қолданбаларда сақтықпен жазылуы керек, өйткені Java EE қолданба серверлері көбінесе Principal және Group объектілері арасындағы қатынастарды белгілі бір тәртіппен орнатуды күтеді. Бұл әдіс javax.security.auth.login.FailedLoginException тастауы керек, егер аутентификация сәтсіз болса (мысалы, пайдаланушы дұрыс емес логин немесе парольді енгізген болса). abort: Егер аутентификация процесі сәтсіз болса шақырылады. Егер бұл әдіс false қайтарса, онда осы жүйеге кіру модулі елемей қалдырылады. logout: Жүйеден шығу кезінде орындалуы тиіс код (мысалы, Principal-ды Субъекттен алып тастауы немесе веб-сессияны жарамсыз етуі мүмкін). Жүйеге кіру модульдері белгілі бір SSO протоколы/шеңбері арқылы (SSO) бір реттік кіруді қамтамасыз ете алады (мысалы, SAML, OpenID және SPNEGO), аппараттық қауіпсіздік токендерінің (мысалы, USB токені) болуын тексеруге болады және т.б. N-деңгейлі қолданбада LoginModules клиенттік және серверлік тараптарда да болуы мүмкін.

LoginModule (javax.security.auth.spi.LoginModule) - жүйеге кіру модулі

Жүйеге кіру модульдері осы интерфейсті жүзеге асыру арқылы жазылады; олар аутентификацияның нақты кодын қамтиды. Ол пайдаланушының тіркелгілік ақпаратын растау үшін әртүрлі механизмдерді пайдалана алады. Код дерекқорынан құпия сөзді алып, модульге ұсынылған құпия сөзбен салыстыра алады.

LoginContext (javax.security.auth.login.LoginContext) (жауап беру контекстін)

Жүйеге кіру контексі JAAS фреймворкінің ядросы болып табылады, ол Subject құру арқылы аутентификация процесін іске қосады. Аутентификация процесі барысында, Subject әртүрлі негізгі тұлғалармен (principals) және одан әрі өңдеу үшін деректермен (credentials) толықтырылады.

Тақырыбы (javax.security.auth.Subject)

Субъект – аутентификация сұраныс жасаған жеке пайдаланушы, ұйым немесе жүйе, яғни клиент.

Негізгі (java.security.Principal)

Негізгі қағида – нысанның сипаттамасын білдіреді. Ол нысанның ерекшеліктері немесе қасиеттерін қамтиды. Нысан бірнеше негізгі қағиданы қамтуы мүмкін.

Құжаттар

Құжаттар – қарастырылып отырған нысанға қатысты ақпараттың ғана бөліктері. Олар шот нөмірлері, құпия сөздер, сертификаттар сияқты болуы мүмкін. Құжат нысан маңызды ақпаратты білдіргендіктен, дұрыс және қауіпсіз құжат жасау үшін қосымша интерфейстер пайдалы болуы мүмкін – javax.security.auth.Destroyable және javax.security.auth.Refreshable. Мысалы, пайдаланушы сәтті аутентификацияланғаннан кейін, сіз нысанды құпия ID (құжат түрінде) арқылы толтырасыз, оның көмегімен нысан кейбір маңызды қызметтерді орындай алады, бірақ құжат белгілі бір уақыттан кейін жойылуы керек. Мұндай жағдайда Destroyable интерфейсін іске асыру қажет. Егер құжаттың жарамдылық мерзімі шектеулі болса, Refreshable интерфейсі пайдалы болуы мүмкін.