Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
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 қолданбаларының қауіпсіздік архитектурасын жетілдіреді.
Java Authentication and Authorization Service, or JAAS, pronounced "Jazz", is the Java implementation of the standard Pluggable Authentication Module (PAM) information security framework. JAAS was introduced as an extension library to the Java Platform, Standard Edition 1.3 and was integrated in version 1.4. JAAS has as its main goal the separation of concerns of user authentication so that they may be managed independently. While the former authentication mechanism contained information about where the code originated from and who signed that code, JAAS adds a marker about who runs the code. By extending the verification vectors JAAS extends the security architecture for Java applications that require authentication and authorization modules.
Жүйеге кіру модульдері
Жүйеге кіру модульдері негізінен аутентификациямен айналысады, авторизациямен емес, және JAAS-тың кеңінен қолданылатын компонентін құрайды. Жүйеге кіру модулі javax.security.auth.spi. LoginModule интерфейсін іске асыруды қажет етеді, ол келесі әдістерді анықтайды:
Login modules are primarily concerned with authentication rather than authorization and form a widely used component of JAAS. A login module is required to implement the javax. security. auth. spi. LoginModule interface, which specifies the following methods:
Ескерту: Субъект – жүйеге кіруге тырысатын пайдаланушы. 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 клиенттік және серверлік тараптарда да болуы мүмкін.
Note: A Subject is the user that is attempting to log in. initialize: Code to initialize the login module, usually by storing the parameters passed into appropriate fields of the Class. login: Actually check the credentials provided via an Object that implements the javax. security. auth. Callback interface (e. g. check against a database). This method could prompt the user for their login and password or it could use details previously obtained. It is important to note here that, if invalid credentials are supplied then a javax. security. auth. login. FailedLoginException should be thrown (rather than returning false, which indicates that this login module should be ignored, which potentially allows authentication to succeed). commit: The identity of the subject has been verified, so code in this method sets up the Principal and Groups (roles) for the successfully authenticated subject. This method has to be written carefully in enterprise applications as Java EE application servers often expect the relationships between the Principal and Group objects to be set up in a certain way. This method should throw a javax. security. auth. login. FailedLoginException if authentication fails (e. g. a user has specified an incorrect login or password). abort: Called if the authentication process itself fails. If this method returns false, then this Login Module is ignored. logout: Code that should be executed upon logout (e. g. could remove the Principal from the Subject or could invalidate a web session). Login modules can provide single sign on (SSO) via a particular SSO protocol/framework (e. g. SAML, OpenID, and SPNEGO), can check for the presence of hardware security tokens (e. g. USB token), etc. In an n tier application, LoginModules can be present on both the client side and server side.
LoginModule (javax.security.auth.spi.LoginModule) - жүйеге кіру модулі
Жүйеге кіру модульдері осы интерфейсті жүзеге асыру арқылы жазылады; олар аутентификацияның нақты кодын қамтиды. Ол пайдаланушының тіркелгілік ақпаратын растау үшін әртүрлі механизмдерді пайдалана алады. Код дерекқорынан құпия сөзді алып, модульге ұсынылған құпия сөзбен салыстыра алады.
Login modules are written by implementing this interface; they contain the actual code for authentication. It can use various mechanisms to authenticate user credentials. The code could retrieve a password from a database and compare it to the password supplied to the module.
LoginContext (javax.security.auth.login.LoginContext) (жауап беру контекстін)
Жүйеге кіру контексі JAAS фреймворкінің ядросы болып табылады, ол Subject құру арқылы аутентификация процесін іске қосады. Аутентификация процесі барысында, Subject әртүрлі негізгі тұлғалармен (principals) және одан әрі өңдеу үшін деректермен (credentials) толықтырылады.
The login context is the core of the JAAS framework which kicks off the authentication process by creating a Subject. As the authentication process proceeds, the subject is populated with various principals and credentials for further processing.
Тақырыбы (javax.security.auth.Subject)
Субъект – аутентификация сұраныс жасаған жеке пайдаланушы, ұйым немесе жүйе, яғни клиент.
A subject represents a single user, entity or system –in other words, a client– requesting authentication.
Негізгі (java.security.Principal)
Негізгі қағида – нысанның сипаттамасын білдіреді. Ол нысанның ерекшеліктері немесе қасиеттерін қамтиды. Нысан бірнеше негізгі қағиданы қамтуы мүмкін.
A principal represents the face of a subject. It encapsulates features or properties of a subject. A subject can contain multiple principals.
Құжаттар
Құжаттар – қарастырылып отырған нысанға қатысты ақпараттың ғана бөліктері. Олар шот нөмірлері, құпия сөздер, сертификаттар сияқты болуы мүмкін. Құжат нысан маңызды ақпаратты білдіргендіктен, дұрыс және қауіпсіз құжат жасау үшін қосымша интерфейстер пайдалы болуы мүмкін – javax.security.auth.Destroyable және javax.security.auth.Refreshable. Мысалы, пайдаланушы сәтті аутентификацияланғаннан кейін, сіз нысанды құпия ID (құжат түрінде) арқылы толтырасыз, оның көмегімен нысан кейбір маңызды қызметтерді орындай алады, бірақ құжат белгілі бір уақыттан кейін жойылуы керек. Мұндай жағдайда Destroyable интерфейсін іске асыру қажет. Егер құжаттың жарамдылық мерзімі шектеулі болса, Refreshable интерфейсі пайдалы болуы мүмкін.
Credentials are nothing but pieces of information regarding the subject in consideration. They might be account numbers, passwords, certificates etc. As the credential represents some important information, the further interfaces might be useful for creating a proper and secure credential – javax. security. auth. Destroyable and javax. security. auth. Refreshable. Suppose that after the successful authentication of the user you populate the subject with a secret ID (in the form of a credential) with which the subject can execute some critical services, but the credential should be removed after a specific time. In that case, one might want to implement the Destroyable interface. Refreshable might be useful if a credential has only a limited timespan in which it is valid.