Overview

This article describes how to perform authentication with ORCID, OSF (The Open Science Framework), and GRDM (GakuNin RDM) using NextAuth.js.

Demo Apps

ORCID

https://orcid-app.vercel.app/

OSF

https://osf-app.vercel.app/

GRDM

https://rdm-app.vercel.app/

Repository

ORCID

https://github.com/nakamura196/orcid_app

Below is an example of the options configuration.

https://github.com/nakamura196/orcid_app/blob/main/src/app/api/auth/[…nextauth]/authOptions.js

e}x;pp]c}or,a,ro{}la}a}tv,ls,s,iintcca}tu}p}byssryi}rcddayllu,os,r,aneeenfeoe:mpiitup}keua}or}ccsstctttnreeeehra,errs,fe;kssu(oouss"::nnolrsrrnilyc}ritinessiirjakkrt:ottr:acee:n:no)eludam:eoonwceenr""ISimosdfcnh};ter:masnntcnna[cOodez"sppi"o"se,u(nei{s..s(o..tuiRa:cah:eorh:hrtaAArpp:liaue{uaootdCurtt:netteducnr{r:ocssncrkh"Itpeit{sct{tqretcoopncesttcceO,Dhrtop"etppuerheaffrp(erio)einp""o:ns/__ssessopwiior{s.oksd;t,,c::atu::s:rtallfosine{siep/uyr//t=i:ieeifsTd;nT=osr{/tpi//({zt)[lieo,onsoohe:op{aa""elsk=kas.cre:ruwtar{o.eseaeceecnpcbtaiperp.intcnc=nsit"ri.oiopscepoocovsdicodoktnl.iren=ko=u{...coc.re:ijdsr,eunOeoadeocnfcs-ostnnatRnrtesrise`aoinoto.tc.Cvge"sgdtBtnd?nokocoI./",./.}cei(e.?ker}orDOo,eoo)hao)nn.enc)uc_Ranar(rn;taen.iniCCuvug{`e/immad{tdLIt.t/hrjfea}c;.;IDhNhvtsi?i)caE_/E/3t$oe.lecNCaXt.p{nr[s{scTLuTo0st"""?se_ItAk/:o,]g.TAsIEhUe[/k.ieodsDNoTnO/epvmkd_,TrH"Rpnaeaet_i_,CustninOoSzUIb.h-l;RkEeRD.a,n?CeC"L]oca.InR,"rcm[D;E+,cee0Tiss]I,"dsG"?D/._e].aott?etpro.moigkOva//eRaisavnClleu3}Iu,st.`Desh0,i//I+oc$Dna{"ltlo"bkae+cnksp/.rooorrfcciiildde"}.,`p,er{son?.name?.["family-name"]?.value,

OSF

https://github.com/nakamura196/osf-app

Below is an example of the options configuration.

https://github.com/nakamura196/osf-app/blob/main/src/app/api/auth/[…nextauth]/authOptions.js

e}x;pp]c}or,aro{}la}a}tv,ls,s,iintcca}tu}p}bysssryi}i}rcddayllu,os,raneeeenffeoe:mpiitup}keua}or}ccssstcttttnreeeehra,errs,fe;ksssu(oo(ouss"::nnolrsrrnilyc}ritinessiiirjakkukrt:ottr:acee:n:no)eludam:eooonwceesens""ISimosdfcnh};ter:masnnntcnnena[fOodez"sppi"o"se,u(nei{s...s(o..r.tu"pa:cah:eorh:hrtaAArpp:liarue{uar)iot,eurtt:netteducnr{r:ocessncedkhntpeit{sct{tqretcoopncfesttcf{eOhrtoppetppuerheaffrp(errio)er=npS"o:nsr__ssessopwiior{se.okse;tc,c::otu::s:rtallfossine{ssuiiep/cyr//t=i:ieeifsThd;nThsoesr{/epi//({zt).lieoT,oTennsoase:aa{aa"delsko=korsc.ccs:cpwtar{a.esekaek.eeec.`citaipetd.inetcnei=nsoe"$o.oiopsaadonocndFvsunc{uoktnl..tan=ko=;{r..nvopnse:ijiat,=eu=aOet.drtfnfcsd.atnnamSnsOeos.se`ao,a.tot.tcaeFv.S"c.itBtntaokoi,ccw_.oF,eoo}cei(ttkekdocSoCOs_ss/)hao)rtene;uuoarLSfSsfv(rn;irn.nsnuvkIF.C..2{"e/Gbia.etne"E_iOei/hrjaub}crr.t,NCoPnoutsktu)cea.uTL/Ev/st$ouetefA}crs_Io.oep{nNse{srd)ceeIEaNarst"i.ssedefrDNuEus:o,nf.Ts{sr,TtXt//kueohOseI_h"Thm/eRlmkTS_sDS2oA2eanDlaeoFthE/sU//psM_inko_tCafTt"i.nl;eIktoRu.Ho,.aua,nDeoEtf_kocsm;nktThuUesceet;eo,olRnfer,nkrlL".s;ei_},isIsnzr/o_DSeeea/tas"apvoGGvs,di2keeeiS//ettoaoaunrnvsus}feeefte`umf.hr,larrf/slieeuc/_lsflamnhrlleafe_l/mrtswb"eoohra,mkicfettk{ranoe/otk"omtte,sronfai`tbs,tuertsMiesabsinuoaBtngueeislsdcorpeedivrieactenUvRiIrofnrmoemntenvvairrioanbmleentvariable

GRDM

https://github.com/nakamura196/rdm_app

Below is an example of the options configuration.

https://github.com/nakamura196/rdm_app/blob/main/src/app/api/auth/[…nextauth]/authOptions.js

e}x;pp]c}r,a,ro{}la}a}tdv,ls,s,eiintcca}t}up}byss}ryi}i}rcbddayllu,o,sr,anee;enffeoue:mpiitup}kua}eoi}c}rccssitcttttngreeeehra,ersrffo;ekAssdu(oo(ous:s"::nnolrcsrrnlyc}c}ci}r}iitninetssdii.:rjakkukrt:gttr:alcee::no)o)ofenl(hsdamu:edoosnwceesenta""ISimiosdcncccgr;nmh}b;ntttfe!rt:marsnnettcnnenar[kGodez"seppi{"slloresee,os(huoo(poein{sn..sos(o..r.tuuuaa:cah:neorhrtiidadtta"dt!rrk:prwup:lieauske{uar)iotenkurttt:neteeeenihdCyronerosr:uoccsiesncedkh,iutpeit{_sctqbnn:trroeo,jewn"ofneopsneceonsttcf{eOnNhrtopipetpuott_eedrnss{shfierfrpe(sern.io)er=np"i"o:nsdr__sed__ctcs:sto.n:tilwiorr{ss.iokse;t,n,c:::otu:syisoyt:enoetle=lfoas=udne{ssuiep/cyr/tdenp_="nkwjpe.EeifsrTs,;nThsoERsr{/pepi/(=:cteuP{t=)ss)dr{.lieyo{e,oTennDsoarse:acre:raO-Eo:ardelskrkorsaM.ccos:conpexiwSTa{rn/{toa.esie,aek.b"eecc.`cnertt":aTywr/artd.inncnei=l,nsoee"$otwo:.ai"paoa(aadofAcndevsusnc{uecpu`t,eirp".tano=do=;{..nsvopnxUepat$"t(iIiat,rdu=nGet..drttRsrrh{f:`.nd.amtnaeAnseOeos)LsoaoperTr!va.taottcaxKv.nS"c.S.cmrrt"eodpataotko,cctU.rvF,er{eeesiocaskmrlttkiekocS-NGd._sdans.zchp.e.oirteoneuuoaaIAmGSsmrvscae(pjnnfd"irnn.nsnuvuNK.AC..c..ots"lsiiubiaetnet_UnKOenhGedishiorilunub}fcIr.thCNiUPniPAneo.tcne.esktu)rcDa.uLIiNEviaKv,neta(qa.enetoe}crsdIN.I..rU._npt)ucdrose{mst)ceeeE_aNNaaNGcvsi;e.aw.ssoefrbNCc_EcmIAo.:osjtpnf.tT{sruTL.CX.sNKdN/ntpar"ueoosseIg_IjL"Tj(_UAeE///.o,lmkke_sDIEpIoAp{CNu"XaxfvaflaeesthmDN/EsU/LIt,Tc-Pa2ti_innso_fo,ToNfToINhAcwai/tlnl;iktrd_aT.HaE_oUowrlureatoeooeSu_f_uNCrTuwsesiHmonnkmEtIuUtTLiHn-edebsae;eChDlRh_Iz_tf:rutnsunpR2,lL2IEaUsotstrd"es;rE/_}/DNtR.rh$/eulNseoTar/t,TiLrme{msceosrf,ueao_o}d-re)t"iitapkSn/mure/umNEolhSdieEa.res"{riomnIeoe/nCcpnls.,esafrnoa"ERoiieps"sNitidsu,xEd/inot)ialnozftpTea.cna;nm"eec.hl,uaostge,et"lf/itcdeu"do,iucch.esI,ekelai/jdbTDdenlltcp"oent_lla/,dxg_wbyloytrirala}adicabuo`ctkdatn)eae/dchc;fs"gk2eu,ac//lqklgtluuiaoyenekkrinueyMntnna`_i"pn,in,aad`rg,{aemesBtcueoirpledvrieadiernevcitroUnRmIenftrovmareinavbilreonmentvariable

Summary

There may be areas for improvement, but I hope this serves as a useful reference.