€cdocutils.nodes document q)q}q(U nametypesq}q(Xuc13qˆX use case 13 - user authorizationqNXhistoryqˆuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUuc13qhUuse-case-13-user-authorizationqhUhistoryquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX .. _UC13:UparentqhUsourceqXj/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/13_uc.txtqUtagnameqUtargetqU attributesq }q!(Uidsq"]Ubackrefsq#]Udupnamesq$]Uclassesq%]Unamesq&]Urefidq'huUlineq(KUdocumentq)hh]ubcdocutils.nodes section q*)q+}q,(hUhhhhUexpect_referenced_by_nameq-}q.hhshUsectionq/h }q0(h$]h%]h#]h"]q1(hheh&]q2(hheuh(Kh)hUexpect_referenced_by_idq3}q4hhsh]q5(cdocutils.nodes title q6)q7}q8(hX Use Case 13 - User Authorizationq9hh+hhhUtitleq:h }q;(h$]h%]h#]h"]h&]uh(Kh)hh]q…q?}q@(hh9hh7ubaubcsphinx.addnodes index qA)qB}qC(hUhh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX Use Case 13Uindex-0qIUNtqJ(hHXUC13hIUNtqK(hHX AuthorizationhIUNtqLeUinlineqM‰uh(Kh)hh]ubh)qN}qO(hUhh+hhhhh }qP(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes definition_list qQ)qR}qS(hUhh+hhh-}hUdefinition_listqTh }qU(h$]h%]h#]h"]qVhIah&]uh(Nh)hh3}qWhIhNsh]qX(cdocutils.nodes definition_list_item qY)qZ}q[(hX+Revisions View document revision history_. hhRhhhUdefinition_list_itemq\h }q](h$]h%]h#]h"]h&]uh(K h]q^(cdocutils.nodes term q_)q`}qa(hX RevisionsqbhhZhhhUtermqch }qd(h$]h%]h#]h"]h&]uh(K h]qeh=X Revisionsqf…qg}qh(hhbhh`ubaubcdocutils.nodes definition qi)qj}qk(hUh }ql(h$]h%]h#]h"]h&]uhhZh]qmcdocutils.nodes paragraph qn)qo}qp(hX View document revision history_.hhjhhhU paragraphqqh }qr(h$]h%]h#]h"]h&]uh(K h]qs(h=XView document revision qt…qu}qv(hXView document revision hhoubcdocutils.nodes reference qw)qx}qy(hXhistory_UresolvedqzKhhohU referenceq{h }q|(UnameXhistoryq}Urefuriq~X”https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/13_uc.txtqh"]h#]h$]h%]h&]uh]q€h=Xhistoryq…q‚}qƒ(hUhhxubaubh=X.…q„}q…(hX.hhoubeubahU definitionq†ubeubhY)q‡}qˆ(hXpGoal Determine if a user is authorized to perform some action on an object (e.g. get, put, query, delete, ...). hhRhhhh\h }q‰(h$]h%]h#]h"]h&]uh(K h)hh]qŠ(h_)q‹}qŒ(hXGoalqhh‡hhhhch }qŽ(h$]h%]h#]h"]h&]uh(K h]qh=XGoalq…q‘}q’(hhhh‹ubaubhi)q“}q”(hUh }q•(h$]h%]h#]h"]h&]uhh‡h]q–hn)q—}q˜(hXjDetermine if a user is authorized to perform some action on an object (e.g. get, put, query, delete, ...).q™hh“hhhhqh }qš(h$]h%]h#]h"]h&]uh(K h]q›h=XjDetermine if a user is authorized to perform some action on an object (e.g. get, put, query, delete, ...).qœ…q}qž(hh™hh—ubaubahh†ubeubeubhn)qŸ}q (hXSummaryq¡hh+hhhhqh }q¢(h$]h%]h#]h"]h&]uh(Kh)hh]q£h=XSummaryq¤…q¥}q¦(hh¡hhŸubaubcdocutils.nodes block_quote q§)q¨}q©(hUhh+hhhU block_quoteqªh }q«(h$]h%]h#]h"]h&]uh(Nh)hh]q¬(hn)q­}q®(hX¢User authorization is the process followed to determine if the authenticated user is permitted to perform some operation. The result will always be True or False.q¯hh¨hhhhqh }q°(h$]h%]h#]h"]h&]uh(Kh]q±h=X¢User authorization is the process followed to determine if the authenticated user is permitted to perform some operation. The result will always be True or False.q²…q³}q´(hh¯hh­ubaubhn)qµ}q¶(hXINote: Need to define which objects require access control / authorizationq·hh¨hhhhqh }q¸(h$]h%]h#]h"]h&]uh(Kh]q¹h=XINote: Need to define which objects require access control / authorizationqº…q»}q¼(hh·hhµubaubeubhQ)q½}q¾(hUhh+hNhhTh }q¿(h$]h%]h#]h"]h&]uh(Nh)hh]qÀ(hY)qÁ}qÂ(hXHActors - User - Client application - Member Node - Coordinating Node hh½hhhh\h }qÃ(h$]h%]h#]h"]h&]uh(Kh]qÄ(h_)qÅ}qÆ(hXActorsqÇhhÁhhhhch }qÈ(h$]h%]h#]h"]h&]uh(Kh]qÉh=XActorsqÊ…qË}qÌ(hhÇhhÅubaubhi)qÍ}qÎ(hUh }qÏ(h$]h%]h#]h"]h&]uhhÁh]qÐcdocutils.nodes bullet_list qÑ)qÒ}qÓ(hUh }qÔ(UbulletqÕX-h"]h#]h$]h%]h&]uhhÍh]qÖ(cdocutils.nodes list_item q×)qØ}qÙ(hXUser h }qÚ(h$]h%]h#]h"]h&]uhhÒh]qÛhn)qÜ}qÝ(hXUserqÞhhØhhhhqh }qß(h$]h%]h#]h"]h&]uh(Kh]qàh=XUserqá…qâ}qã(hhÞhhÜubaubahU list_itemqäubh×)qå}qæ(hXClient application h }qç(h$]h%]h#]h"]h&]uhhÒh]qèhn)qé}qê(hXClient applicationqëhhåhhhhqh }qì(h$]h%]h#]h"]h&]uh(Kh]qíh=XClient applicationqî…qï}qð(hhëhhéubaubahhäubh×)qñ}qò(hX Member Node h }qó(h$]h%]h#]h"]h&]uhhÒh]qôhn)qõ}qö(hX Member Nodeq÷hhñhhhhqh }qø(h$]h%]h#]h"]h&]uh(Kh]qùh=X Member Nodeqú…qû}qü(hh÷hhõubaubahhäubh×)qý}qþ(hXCoordinating Node h }qÿ(h$]h%]h#]h"]h&]uhhÒh]rhn)r}r(hXCoordinating Noderhhýhhhhqh }r(h$]h%]h#]h"]h&]uh(Kh]rh=XCoordinating Noder…r}r(hjhjubaubahhäubehU bullet_listr ubahh†ubeubhY)r }r (hXXPreconditions - User is at some level of authentication (may be anonymous or logged in) hh½hhhh\h }r (h$]h%]h#]h"]h&]uh(K!h)hh]r (h_)r}r(hX Preconditionsrhj hhhhch }r(h$]h%]h#]h"]h&]uh(K!h]rh=X Preconditionsr…r}r(hjhjubaubhi)r}r(hUh }r(h$]h%]h#]h"]h&]uhj h]rhÑ)r}r(hUh }r(hÕX-h"]h#]h$]h%]h&]uhjh]rh×)r}r(hXHUser is at some level of authentication (may be anonymous or logged in) h }r (h$]h%]h#]h"]h&]uhjh]r!hn)r"}r#(hXGUser is at some level of authentication (may be anonymous or logged in)r$hjhhhhqh }r%(h$]h%]h#]h"]h&]uh(K!h]r&h=XGUser is at some level of authentication (may be anonymous or logged in)r'…r(}r)(hj$hj"ubaubahhäubahj ubahh†ubeubhY)r*}r+(hXžTriggers - User is requesting some operation to be performed on an object - An operation acting as a proxy for a user performs some operation on an object hh½hhhh\h }r,(h$]h%]h#]h"]h&]uh(K'h)hh]r-(h_)r.}r/(hXTriggersr0hj*hhhhch }r1(h$]h%]h#]h"]h&]uh(K'h]r2h=XTriggersr3…r4}r5(hj0hj.ubaubhi)r6}r7(hUh }r8(h$]h%]h#]h"]h&]uhj*h]r9hÑ)r:}r;(hUh }r<(hÕX-h"]h#]h$]h%]h&]uhj6h]r=(h×)r>}r?(hX?User is requesting some operation to be performed on an object h }r@(h$]h%]h#]h"]h&]uhj:h]rAhn)rB}rC(hX>User is requesting some operation to be performed on an objectrDhj>hhhhqh }rE(h$]h%]h#]h"]h&]uh(K$h]rFh=X>User is requesting some operation to be performed on an objectrG…rH}rI(hjDhjBubaubahhäubh×)rJ}rK(hXOAn operation acting as a proxy for a user performs some operation on an object h }rL(h$]h%]h#]h"]h&]uhj:h]rMhn)rN}rO(hXNAn operation acting as a proxy for a user performs some operation on an objectrPhjJhhhhqh }rQ(h$]h%]h#]h"]h&]uh(K&h]rRh=XNAn operation acting as a proxy for a user performs some operation on an objectrS…rT}rU(hjPhjNubaubahhäubehj ubahh†ubeubhY)rV}rW(hXxPost Conditions - The operation continues if the user is authorized or terminates raising an unauthorized exception. hh½hhhh\h }rX(h$]h%]h#]h"]h&]uh(K,h)hh]rY(h_)rZ}r[(hXPost Conditionsr\hjVhhhhch }r](h$]h%]h#]h"]h&]uh(K,h]r^h=XPost Conditionsr_…r`}ra(hj\hjZubaubhi)rb}rc(hUh }rd(h$]h%]h#]h"]h&]uhjVh]rehÑ)rf}rg(hUh }rh(hÕX-h"]h#]h$]h%]h&]uhjbh]rih×)rj}rk(hXdThe operation continues if the user is authorized or terminates raising an unauthorized exception. h }rl(h$]h%]h#]h"]h&]uhjfh]rmhn)rn}ro(hXbThe operation continues if the user is authorized or terminates raising an unauthorized exception.rphjjhhhhqh }rq(h$]h%]h#]h"]h&]uh(K*h]rrh=XbThe operation continues if the user is authorized or terminates raising an unauthorized exception.rs…rt}ru(hjphjnubaubahhäubahj ubahh†ubeubeubcdocutils.nodes comment rv)rw}rx(hX"@startuml images/13_seq.png actor User participant "Client" as app_client << Application >> User -> app_client participant "CRUD API" as c_crud << Coordinating Node >> participant "Authorization API" as c_authorize << Coordinating Node >> app_client -> c_crud: get(auth_token, PID) c_crud -> c_authorize: isAuthorized(auth_token, method, resultset) loop for each pid in resultset c_authorize -> c_authorize: isAuthorized(auth_token, method, pid) end c_crud <-- c_authorize: T or F app_client <-- c_crud: resultset or raise NotAuthorized @endumlhh+hhhUcommentryh }rz(U xml:spacer{Upreserver|h"]h#]h$]h%]h&]uh(K=h)hh]r}h=X"@startuml images/13_seq.png actor User participant "Client" as app_client << Application >> User -> app_client participant "CRUD API" as c_crud << Coordinating Node >> participant "Authorization API" as c_authorize << Coordinating Node >> app_client -> c_crud: get(auth_token, PID) c_crud -> c_authorize: isAuthorized(auth_token, method, resultset) loop for each pid in resultset c_authorize -> c_authorize: isAuthorized(auth_token, method, pid) end c_crud <-- c_authorize: T or F app_client <-- c_crud: resultset or raise NotAuthorized @endumlr~…r}r€(hUhjwubaubcdocutils.nodes image r)r‚}rƒ(hX.. image:: images/13_seq.png hh+hhhUimager„h }r…(UuriX!design/UseCases/images/13_seq.pngr†h"]h#]h$]h%]U candidatesr‡}rˆU*j†sh&]uh(K?h)hh]ubhn)r‰}rŠ(hX)*Figure 1.* Interactions for use case 13.r‹hh+hhhhqh }rŒ(h$]h%]h#]h"]h&]uh(K@h)hh]r(cdocutils.nodes emphasis rŽ)r}r(hX *Figure 1.*h }r‘(h$]h%]h#]h"]h&]uhj‰h]r’h=X Figure 1.r“…r”}r•(hUhjubahUemphasisr–ubh=X Interactions for use case 13.r—…r˜}r™(hX Interactions for use case 13.hj‰ubeubh)rš}r›(hX¡.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/13_uc.txtU referencedrœKhh+hhhhh }r(h~hh"]ržhah#]h$]h%]h&]rŸhauh(KCh)hh]ubeubehUU transformerr NU footnote_refsr¡}r¢Urefnamesr£}r¤h}]r¥hxasUsymbol_footnotesr¦]r§Uautofootnote_refsr¨]r©Usymbol_footnote_refsrª]r«U citationsr¬]r­h)hU current_liner®NUtransform_messagesr¯]r°(cdocutils.nodes system_message r±)r²}r³(hUh }r´(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOrµuh]r¶hn)r·}r¸(hUh }r¹(h$]h%]h#]h"]h&]uhj²h]rºh=X*Hyperlink target "uc13" is not referenced.r»…r¼}r½(hUhj·ubahhqubahUsystem_messager¾ubj±)r¿}rÀ(hUh }rÁ(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypejµuh]rÂhn)rÃ}rÄ(hUh }rÅ(h$]h%]h#]h"]h&]uhj¿h]rÆh=X-Hyperlink target "index-0" is not referenced.rÇ…rÈ}rÉ(hUhjÃubahhqubahj¾ubeUreporterrÊNUid_startrËKU autofootnotesrÌ]rÍU citation_refsrÎ}rÏUindirect_targetsrÐ]rÑUsettingsrÒ(cdocutils.frontend Values rÓorÔ}rÕ(Ufootnote_backlinksrÖKUrecord_dependenciesr×NU rfc_base_urlrØUhttps://tools.ietf.org/html/rÙU tracebackrÚˆUpep_referencesrÛNUstrip_commentsrÜNU toc_backlinksrÝUentryrÞU language_coderßUenràU datestampráNU report_levelrâKU _destinationrãNU halt_levelräKU strip_classesråNh:NUerror_encoding_error_handlerræUbackslashreplacerçUdebugrèNUembed_stylesheetré‰Uoutput_encoding_error_handlerrêUstrictrëU sectnum_xformrìKUdump_transformsríNU docinfo_xformrîKUwarning_streamrïNUpep_file_url_templaterðUpep-%04drñUexit_status_levelròKUconfigróNUstrict_visitorrôNUcloak_email_addressesrõˆUtrim_footnote_reference_spacerö‰Uenvr÷NUdump_pseudo_xmlrøNUexpose_internalsrùNUsectsubtitle_xformrú‰U source_linkrûNUrfc_referencesrüNUoutput_encodingrýUutf-8rþU source_urlrÿNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrˆU generatorr NUdump_internalsr NU smart_quotesr ‰U pep_base_urlr U https://www.python.org/dev/peps/r Usyntax_highlightrUlongrUinput_encoding_error_handlerrjëUauto_id_prefixrUidrUdoctitle_xformr‰Ustrip_elements_with_classesrNU _config_filesr]rUfile_insertion_enabledrˆU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hh+hh+hIhRhjšuUsubstitution_namesr}rhh)h }r(h$]h"]h#]Usourcehh%]h&]uU footnotesr ]r!Urefidsr"}r#(h]r$hahI]r%hNauub.