概要

iiif auth apiを試すため環境として、以下のリポジトリが提供されています。

https://github.com/digirati-co-uk/iiif-auth-server

今回は、上記のリポジトリを使用して、iiif auth apiを試します。

起動

準備

gcpsppidyoiittuppihrciociilinennofssn--vtteameaaunllhtvvllthe/t-nb-psvi-rsenu:rv/pr/eage/encrqgrvtauiiditverhaeutpmbeie.pnctosm./tdxitgirati-co-uk/iiif-auth-server

pip install -r requirements.txt時にバージョンの不具合などが発生した場合、以下のように、バージョン情報を削除して、再度試すなどしてみてください。

aFiiJMpPssWrlitiabiitegaisnrrlxerpsfdjklvkak2aauoezrn2pwdesgSoueeargrfeoeus

db作成

その後、dbを作成します。

eefxxlppaoosrrkttiFFnLLiAAtSSdKKb__ADPEPB=UiGi=itfrauueth

上記を実行後、iiif-auth-server/iiifauthiiifauth.dbというファイルが作成されます。

dbの中身は、以下のようなツールを使って確認することができます。

https://sqlitebrowser.org/dl/

起動

以下を実行します。

flaskrun

その後、http://127.0.0.1:5000にアクセスすると、以下の画面が表示されます。

ビューアの準備

以下を実行して、mirador3をダウンロードして、ローカルサーバで起動してみます。

wpgyetthohntt-pms:h/t/tmpi.rsaedrovre.rcultural.jp

http://0.0.0.0:8000にアクセスして、以下の画面が表示されればOKです。

ビューアに読み込ませる

http://127.0.0.1:5000のページの構成は、まずImagesが並び、その後Manifestsが並びます。

今回、下部のManifestsを、Mirador3で読み込んでみます。

わかりやすい例として、02のdegradedを試してみます。

以下のようなURLにアクセスしてみます。

http://0.0.0.0:8000/?manifest=http://0.0.0.0:5000/manifest/02_degraded

すると、以下のように表示されます。特徴として、画面上部にログインのための帯が表示され、色がついていない画像が表示されます。

そこで、ログインをしてみます。以下のようなログイン画面が起動するため、Loginボタンを押します。

そうすると、以下のように、画面上部がLog outボタンに変わり、カラーの画像が表示されます。

上記が、iiif auth apiの利用例のひとつです。

以下、小さくて見にくいと思いますが、先に紹介したDB Browser for SQLiteでiiifauth.dbを開いて表示したものです。session_idtokenなどが保存されていることが確認できます。

info.jsonを概観する

上記の例のinfo.jsonは以下です。

serviceの箇所に記載された文字列が、ビューア上で表示されていたことが確認できます。

{}""""]""}"]"@@hp,ps,t,wcier"re""""""""""]i{}iodiohor@@cdffhlpsldn"gfttvcioeaaeare{}{}e"]"tt:hitoiodnsiiabor,ss,whetlpccn"fclldefv""""""c12481i"x""e:oet:iruuelii@p@lp:a,,,,6d:th:"/l"erirrr"lciriarlt"t:/":x"mpee":eedodbo[eh3:t2i:thLtDH:"""f"efF"1p5[i{"taiee":::i:lia:7":0i":tbosa"Ll"lc6h/6fhpencdPo"["e":et2t/,.t":l"relghh"h"o5t0ith/":ireitt:t":r6p.opt/:p"antttls:0/:t0"t:spp"po""/.a/p."Eiet::h:gh:0p/:0Lxo"o//t/ti.ii/.oanVL//t/ot[i0/i0gm"ioEi0p0upi:iii.ip:egxi.:.t:f5mfi0nlwai00"/.0a.i:"e"iImf./.,/i0gif5,Ynnp.0i0io0eo.0Iog"li.i.i////i0nu,eo0i0iai2ao0sg/:f:fpm/p//tdrIa5.5.igliaaioenp0i0i//e/putnysi0o0oi0viitu'st/00/m2em/httciaa/aa_laa/iatuapapgg2gucoalutuiuiea.etonpetht/t//uj"hpihaha2gs,krev1/u/u/uo1ieaen/ttltcin/eqrrlohohon"cusfok/g/n_litioge1o1tdnoroorinu/eetgennttlxgeish"f"lo/otrxna,u,oklg.attvlgeoojd.0helingusej2an"itods_taq/n"n.ogcu0/"jnayca20,p"uoel_2g,gusig_"ustag,ilyuanot"gu.go,ugjiupitnignh.n"ej.,wpjifgptu"ghl,"l,yocuorloeuxramvpelresiaocnc.ou<nathtroef=i\e"whttthpe:/f/uelxla-mqpulael.iotryg/cpoonltiecnyt\."">,AccessPolicy</a>",

さらに、service > service のところで、以下のような記載があります。ここで、ログアウト時などに必要な情報が記載されています。

"serv]ic{}{}e,"""""":@p@lpiriar[dodbo"f"ef:i:lil"l"e":eh"h"t:t":ttlp"po":h:gh/t/t/t/ot0p0up.:.t:00"/./.,/0i0i.i.i0i0i:f:f5.5.0i0i0o0o00/a/aapapuiuit/t/haha/u/uttltohohk/g/e1o1nu/ttllo/ooklggeooingun"it/n"0/20_2g_aguaguugiuni.nj.pjgp"g,",

これまで、以下のようなURLが登場しています。

上記の処理内容については、iiifauth/iiif_auth_server.pyに記載されています。

例えばログアウトについては、以下のようになっており、tokensテーブルから当該レコードを削除していることが確認できます。

@daepfp.l"ssdddrro"eeaaaeog"rsttttuoLvsaaautuoiibbbretgcoaaan(_ensss'so_.eee"/euip..Yartdo=ecouvpxoutis=(gemhce'ecma/ergstuirl(vee_tteopitrde(gac_vb()notesi('[out"ec)dgwte"reee/r"v_ltl<niie_op,cdtsgae'eegti_)setdifsdeedrirn(ooontpmnu>ia_t/ftti"<itodieek(drre)e)nn,n:,stsiiwefdhrieevenrirtec>ie'fs_)ieiesdrs])i)on_id=?andservice_id=?',

上記のような箇所を参考にして、各機関の環境に応じた実装を行うのがよいように思います。

なお、ログインが成功・失敗時の個々の処理内容は、以下に記載されていました。

{]""}"}"}c0,0,0,o122m___mI""]g""]"g"""eclaala,dalodnaauuaueuapetrbtgbtggbeg"ueh{}ueh{}ruenrsl_il_ail"a:_"sn"sdn"dB:e.:ee_::e"rr"""""""jr"""""""dddTe"vplhdcffp"vplhdcff"e"t_huSiraeeoaagLiraeeoaa:gTrfigtcobasnii"ocobasniirhuoshaefedcfllgefedcfll"aeerensileriuu:isileriuu0d,"ild"l"rirrrn"l"rirrr2ed:s.ae:"pmee{e:"pmee_dejr:":tLHDw:":tLHDg.g"npd:"iaeei:"iaeeajr0eg[L"obast[L"obasupa2i"l"oPnedch"oPnedcggd_tohgl"lerhgl"leru"egh:gtie:"ridtie:"riidaeitna:"petna:"pn:ur{nps":tgps":t_g":teE"ir:teE"id{ouI,/xL"oa/xL"oepiILaoAndLaoVngenIiEomgu"eiEomgi"rn.Fixgpit:dixgpie:a)jialnhialnwdpnfmIe"e"afmIe"i"efgo.pn,n<c.pn,nYdo"ril"Itacil"Igo.roe,nieoe,nujmJ/schs/sgpSaItarsaItrdgoOpnitepnieo"fNistiffistyn-/tu=o/tus'tLaitnraitcthDuti"utiae,tuoFhutuolahtnatnhtnepae/iita/ipbv1rlpu1rveoenee:tneeavnl"qd/hlqrreo,u"/eofus"tgi,edgoiit,hirxirroooneaunenu"sms"fs"hg,pe,u,ahtlrltvheslheia."atto,qtaruccygaycoo/loenupiustotsallylioi"otngc,gosyi\itfn"nhr>eawAwgicifmtctuehehlnsltysysoocuPuoororlfloeieuIxcxrIayaIm<mvFp/pe.lalre>esI"itaaosccncc.poouuu<rnnapttohsttreooefivv=sii\ee"cwwhotntttfhhpiie:gs/uf/rcueaolxtnlait-moeqpnnultaet.l.h"ioe,trygd/ecpmooonl"ti,ecnyt\."">,AccessPolicy</a>"

さまざまな処理が可能なはずですので、上記ファイルと以下を参考に、色々と試してみるのがよさそうです。

https://iiifauth.digtest.co.uk/

まとめ

国内では島根大学などを除いて、あまり導入例を見ないiiif auth apiですが、本記事が参考になりましたら幸いです。

https://current.ndl.go.jp/ca1988

具体的な実装方法などについても、今後調査してみたいと思います。