概要

NextAuth.jsを使ってDrupalのOAuthを利用する方法に関する備忘録です。

挙動

Next.jsで作成したアプリにアクセスして、「Sign in」ボタンを押します。

Drupalにログインしていない場合には、ログイン画面に遷移します。

ログイン済みの場合、「許可」するかのボタンが表示されるので、許可します。

ログイン情報が表示されます。

Drupal側の準備

モジュールのインストール

以下のモジュールをインストールします。

https://www.drupal.org/project/simple_oauth

本記事執筆時点の最新の以下をインストールしました。

composerrequire'drupal/simple_oauth:^6.0@beta'

トークンを暗号化するための鍵の生成

鍵のペアを生成し、セキュリティのためにドキュメントルートの外に保存します。

ooppeennssssllgresnars-ainopurtivpartiev.akteey.k-epyub2o0u4t8>public.key

鍵のパスを設定

鍵のパスを管理画面で設定します:

/admin/config/people/simple_oauth

Amazon LightsailでDrupalを動作させている場合、以下のように、ユーザを変更する必要がありました。

sudochowndaemon:daemonprivate.key

Clients

/admin/config/services/consumerにアクセスします。

default_consumerがすでに作成されているため、こちらを編集します。

Postmanでの動作確認

以下のように入力します。Drupalがhttps://drupal.example.orgにセットアップされていると過程します。

「新しいアクセストークンを取得」を押すと、冒頭の挙動で示した通り、Drupalの画面に遷移し、許可したのち、以下に遷移しました。

https://oauth.pstmn.io/v1/callback?code=...

Next.jsからの利用

ソースコードを以下でご確認いただけます。

https://github.com/nakamura196/drupal_oauth_app

完全の余地があるかと思いますが、以下のような設定により、動作確認ができました。

e}x;pp]c}r,a,ro{}la}a}tdv,ls,s,eiintcca}t}p}byssryi}i}rcbddayllu,o,r,aneeenffeoue:mpiitup}ka}or}ccsstctttngreeeehra,esfekssu(o(ous:s"::nnolrsrrnyc}c}ci}r}itineissiirjakukrt:dttr:acee:no)o)ofeludamm:eoonwcesentr""ISimosdcncccgr;nmh}b;nttter:maasnntcnenar[uDodezpsppi{slloresee,os(huo(neig{s..s(o.r.tuupra:car:eorrtiidadtta"dt!rrkpp:leiaue{ua)ioteauurto:neeeeenihdCyroner{r::ocssncdkh,lptpeic{scqbnn:trroeo,jewnoopncesttc{eO"ahrtoepetuott_eedrnss{sffrpp(erio)e=np,l"o:nsr__ed__ctcs:sto.n:iiorr{s.oks;t",c:sotusyisoyt:enoellfoosine{sui,ep.cyrtdenp_="nkwjeeiffsTd;nTsonsr{eepi(=:cteuP{t=)s).liieo,oenesonse:cre:raO-Eosellsk=krsx.cvs:onpexiwSTa{rn{u.eeseae.tee..`nertt":aTywrbn..intcni=-nsDe"$two:.ai"pao,aepoocdavsRnc{ecpu`t,eirmmrn=ko=;{u..UvopxUepat$"t(eao,eutDeP.drtRsrrh{f:`iftnnahRnADeo)LsoaoperTlito.tcUvLR"cS.cmrrt"eo"loki,cP._U,e{eeesiocasksekedoADAPsans.zchp.eupen;uuLRUAsrvscae(pjnbrn.sn_UTL.c..otspls"o"aetCPH_ehDedisriorfN}cr.LA_SnPRneo.ocneion)caILUCvaUv,neca(qlue}cE_RO.rP._net)ueEl{s)cNCLPNaADcvsi;e.mlseTL,EEmLRo.sospa,T{s_I,Xs_UdN.ntriosIET(CPeEe/elk_DNA{LA"XnxffetI,TUIL,Tv-PaePnoD_TE_A.waiIrr;kSHNCUDwrlDroeE_TLTRwseevnCU_IHU-eddi;RRIE_Pf:_dELDNUAotueT},TRLrh$sdU,/_L_me{e"RaS}T-rr,LpE/OureniCaKresa/RpEls.maEiNepseuT/_nott,aUcnahuRost使/ctLdeuclh,es"ai/dbTUlec{"oenlna,dxkbtlytna_l}ocibo`wkdan)n調/cc;dkeUr/sudeprrau"lp,`a,l`,URI

まとめ

DrupalのOAuthの利用にあたり、参考になりましたら幸いです。