@ksvedal/docs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +74 -0
  2. package/dist/Starthjelp-CDnMsPRF.js +6 -0
  3. package/dist/Starthjelp-DTDqsiPb.js +6 -0
  4. package/dist/_baseUniq-FW_jgYGR.js +477 -0
  5. package/dist/access_policy-BV-cRgLX.js +17 -0
  6. package/dist/access_policy-pBOJMSEK.js +17 -0
  7. package/dist/access_token_lifetime-6ypKk6LU.js +31 -0
  8. package/dist/access_token_lifetime-CVau9UC3.js +31 -0
  9. package/dist/allowed_grant_types-BrnsQvWi.js +101 -0
  10. package/dist/allowed_grant_types-ovkxJeQq.js +101 -0
  11. package/dist/application_type-BAESO1T4.js +36 -0
  12. package/dist/application_type-BtouPPrt.js +39 -0
  13. package/dist/arc-zSbgd3Dl.js +83 -0
  14. package/dist/architecture-U656AL7Q-bG73RCfJ.js +5 -0
  15. package/dist/architectureDiagram-VXUJARFQ-DbJ1yKpS.js +4668 -0
  16. package/dist/authentication_method-B28p58-a.js +43 -0
  17. package/dist/authentication_method-D8EwmEki.js +43 -0
  18. package/dist/authorization_lifetime-CfhrWQ9Y.js +39 -0
  19. package/dist/authorization_lifetime-DrFRbscQ.js +39 -0
  20. package/dist/backchannel_logout_uri-BTceN7xq.js +33 -0
  21. package/dist/backchannel_logout_uri-CBdktUL7.js +33 -0
  22. package/dist/blockDiagram-VD42YOAC-CmPMJI6H.js +2265 -0
  23. package/dist/breadcrumbs.json +1202 -0
  24. package/dist/c4Diagram-YG6GDRKO-BtTnslb7.js +1581 -0
  25. package/dist/channel-B9C38GUl.js +5 -0
  26. package/dist/chunk-4BX2VUAB-BLcImAIn.js +9 -0
  27. package/dist/chunk-55IACEB6-Cd_NYMQ6.js +8 -0
  28. package/dist/chunk-B4BG7PRW-C5mt8tWU.js +1376 -0
  29. package/dist/chunk-DI55MBZ5-BliqH_si.js +1382 -0
  30. package/dist/chunk-FMBD7UC4-D8OxNP20.js +19 -0
  31. package/dist/chunk-QN33PNHL-DBPrGAkF.js +20 -0
  32. package/dist/chunk-QZHKN3VN-Ce2k3n1F.js +15 -0
  33. package/dist/chunk-TZMSLE5B-BB3w_n2J.js +64 -0
  34. package/dist/classDiagram-2ON5EDUG-BJg1PJs9.js +16 -0
  35. package/dist/classDiagram-v2-WZHVMYZB-BJg1PJs9.js +16 -0
  36. package/dist/client_types-BmacnRwO.js +17 -0
  37. package/dist/client_types-Cu_f02j7.js +17 -0
  38. package/dist/clone-DZF-mLM1.js +8 -0
  39. package/dist/components/Docs.d.ts +5 -0
  40. package/dist/components/DocsBreadcrumbs.d.ts +10 -0
  41. package/dist/components/DocsErrorBoundary.d.ts +21 -0
  42. package/dist/components/DocsPage.d.ts +10 -0
  43. package/dist/components/DocsSearch.d.ts +12 -0
  44. package/dist/components/DocsViewer.d.ts +11 -0
  45. package/dist/components/index.d.ts +6 -0
  46. package/dist/components/useDocsStyles.d.ts +1 -0
  47. package/dist/cose-bilkent-S5V4N54A-xEniAY-c.js +2608 -0
  48. package/dist/cytoscape.esm-CjI2IsL8.js +18735 -0
  49. package/dist/dagre-6UL2VRFP-DWEj74f8.js +446 -0
  50. package/dist/defaultLocale-BgPVtth8.js +171 -0
  51. package/dist/delegation_source-B8L65LAZ.js +17 -0
  52. package/dist/delegation_source-DBE0sh58.js +17 -0
  53. package/dist/diagram-PSM6KHXK-Z3KtWXiy.js +533 -0
  54. package/dist/diagram-QEK2KX5R-BVA9QmB8.js +221 -0
  55. package/dist/diagram-S2PKOQOG-BOmc_fL6.js +143 -0
  56. package/dist/docs/folder.d.ts +12 -0
  57. package/dist/docs/types.d.ts +12 -0
  58. package/dist/entraid-CPkATiHs.js +6 -0
  59. package/dist/entraid-CSwp8dMQ.js +6 -0
  60. package/dist/erDiagram-Q2GNP2WA-Blro_6F2.js +842 -0
  61. package/dist/faq-CqjYqwL1.js +8 -0
  62. package/dist/faq-TqD11_1a.js +8 -0
  63. package/dist/flowDiagram-NV44I4VS-BN9iLCEi.js +1627 -0
  64. package/dist/frontchannel_logout_uri-Bt6bvoBs.js +36 -0
  65. package/dist/frontchannel_logout_uri-DRGyFXRl.js +36 -0
  66. package/dist/ganttDiagram-JELNMOA3-CXLPJQlh.js +2670 -0
  67. package/dist/general--WqS-xp8.js +89 -0
  68. package/dist/general-B37q4SsA.js +63 -0
  69. package/dist/general-BCOYLf6V.js +152 -0
  70. package/dist/general-CQFRRoeE.js +63 -0
  71. package/dist/general-Dk7lWiBC.js +152 -0
  72. package/dist/general-QQfgnjEE.js +89 -0
  73. package/dist/gitGraph-F6HP7TQM-ChFlbGFG.js +5 -0
  74. package/dist/gitGraphDiagram-NY62KEGX-DXSPVlhd.js +712 -0
  75. package/dist/graph-dALvSPTP.js +381 -0
  76. package/dist/index-D_FT2Td-.js +25338 -0
  77. package/dist/index.d.ts +2 -0
  78. package/dist/index.js +9 -0
  79. package/dist/info-NVLQJR56-BSQ5ueiP.js +5 -0
  80. package/dist/infoDiagram-WHAUD3N6-D0hbJwWb.js +24 -0
  81. package/dist/init-DjUOC4st.js +16 -0
  82. package/dist/integration_guide-BXkM8zJ-.js +7 -0
  83. package/dist/integration_guide-CLABphnS.js +313 -0
  84. package/dist/integration_guide-Ci8Nz8oL.js +313 -0
  85. package/dist/integration_guide-Ct8RYoMV.js +6 -0
  86. package/dist/integration_guide-DWfjt6Qk.js +6 -0
  87. package/dist/integration_guide-DrKTpPnR.js +6 -0
  88. package/dist/journeyDiagram-XKPGCS4Q-DTU9EVLJ.js +834 -0
  89. package/dist/kanban-definition-3W4ZIXB7-CcKx9EnU.js +721 -0
  90. package/dist/katex-C6SjTJMZ.js +11690 -0
  91. package/dist/layout-DUskCdLZ.js +1441 -0
  92. package/dist/linear-RKbqvfvG.js +259 -0
  93. package/dist/mermaid-parser.core-C-16ojim.js +15189 -0
  94. package/dist/min-CsCJm_uR.js +38 -0
  95. package/dist/mindmap-definition-VGOIOE7T-LpgPu_oq.js +787 -0
  96. package/dist/on_behalf_of-EcHpNqmZ.js +36 -0
  97. package/dist/on_behalf_of-qrlvHfcG.js +36 -0
  98. package/dist/ordinal-DfAQgscy.js +61 -0
  99. package/dist/overview-Bw11cTNo.js +21 -0
  100. package/dist/overview-ZreyAEkN.js +21 -0
  101. package/dist/packet-BFZMPI3H-CwJrUCZn.js +5 -0
  102. package/dist/pie-7BOR55EZ-WUF72bRP.js +5 -0
  103. package/dist/pieDiagram-ADFJNKIX-BRjx2vS_.js +161 -0
  104. package/dist/pkce-BkSKWYmh.js +34 -0
  105. package/dist/pkce-C3U_jCxQ.js +33 -0
  106. package/dist/post_logout_redirect_uri-BSzuTRwg.js +33 -0
  107. package/dist/post_logout_redirect_uri-BnhzB1De.js +33 -0
  108. package/dist/pseudonymous_login-B3oa6s2f.js +17 -0
  109. package/dist/pseudonymous_login-x98obOlL.js +17 -0
  110. package/dist/quadrantDiagram-AYHSOK5B-BOwjGYKH.js +1024 -0
  111. package/dist/radar-NHE76QYJ-DRN4buPP.js +5 -0
  112. package/dist/redirect_uri-Cnlv_2rt.js +38 -0
  113. package/dist/redirect_uri-DgNidm8d.js +38 -0
  114. package/dist/refresh_token_lifetime-DCzCzIyu.js +34 -0
  115. package/dist/refresh_token_lifetime-QcGf0aOG.js +34 -0
  116. package/dist/refresh_token_usage-C2LdxQHa.js +33 -0
  117. package/dist/refresh_token_usage-DXI98e4O.js +33 -0
  118. package/dist/requirementDiagram-UZGBJVZJ-KRDecAgT.js +852 -0
  119. package/dist/sankeyDiagram-TZEHDZUN-MKxbwv35.js +810 -0
  120. package/dist/search-index.json +450 -0
  121. package/dist/sequenceDiagram-WL72ISMW-DEo0cUN3.js +2518 -0
  122. package/dist/sso-BuAlvelZ.js +79 -0
  123. package/dist/sso-DYMIpoUd.js +78 -0
  124. package/dist/stateDiagram-FKZM4ZOC-CaTGomRc.js +263 -0
  125. package/dist/stateDiagram-v2-4FDKWEC3-l4p7_3uG.js +16 -0
  126. package/dist/timeline-definition-IT6M3QCI-ChX0PfWC.js +799 -0
  127. package/dist/token_lifetimes-Cp22x6RM.js +17 -0
  128. package/dist/token_lifetimes-CwzcMEnb.js +17 -0
  129. package/dist/token_type-B8DCg80j.js +17 -0
  130. package/dist/token_type-C7Y04-Fc.js +17 -0
  131. package/dist/treemap-KMMF4GRG-DNEhU-LQ.js +5 -0
  132. package/dist/user_involvement-4nbn_fQ7.js +17 -0
  133. package/dist/user_involvement-COT572uK.js +17 -0
  134. package/dist/visibility-BSqCGXMv.js +17 -0
  135. package/dist/visibility-CidZ07d9.js +17 -0
  136. package/dist/xychartDiagram-PRI3JC2R-CBQAJ13t.js +1340 -0
  137. package/package.json +60 -0
@@ -0,0 +1,2 @@
1
+ export * from './components';
2
+ export * from './docs/types';
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ import { bB as o, bC as r, bD as c, bE as b, bF as D, bG as e } from "./index-D_FT2Td-.js";
2
+ export {
3
+ o as Docs,
4
+ r as DocsBreadcrumbs,
5
+ c as DocsErrorBoundary,
6
+ b as DocsPage,
7
+ D as DocsSearch,
8
+ e as DocsViewer
9
+ };
@@ -0,0 +1,5 @@
1
+ import { I as r, c as a } from "./mermaid-parser.core-C-16ojim.js";
2
+ export {
3
+ r as InfoModule,
4
+ a as createInfoServices
5
+ };
@@ -0,0 +1,24 @@
1
+ import { _ as e, l as s, K as o, e as i, L as g } from "./index-D_FT2Td-.js";
2
+ import { p } from "./mermaid-parser.core-C-16ojim.js";
3
+ var v = {
4
+ parse: /* @__PURE__ */ e(async (r) => {
5
+ const a = await p("info", r);
6
+ s.debug(a);
7
+ }, "parse")
8
+ }, d = {
9
+ version: g.version + ""
10
+ }, c = /* @__PURE__ */ e(() => d.version, "getVersion"), m = {
11
+ getVersion: c
12
+ }, l = /* @__PURE__ */ e((r, a, n) => {
13
+ s.debug(`rendering info diagram
14
+ ` + r);
15
+ const t = o(a);
16
+ i(t, 100, 400, !0), t.append("g").append("text").attr("x", 100).attr("y", 40).attr("class", "version").attr("font-size", 32).style("text-anchor", "middle").text(`v${n}`);
17
+ }, "draw"), f = { draw: l }, b = {
18
+ parser: v,
19
+ db: m,
20
+ renderer: f
21
+ };
22
+ export {
23
+ b as diagram
24
+ };
@@ -0,0 +1,16 @@
1
+ function t(e, a) {
2
+ switch (arguments.length) {
3
+ case 0:
4
+ break;
5
+ case 1:
6
+ this.range(e);
7
+ break;
8
+ default:
9
+ this.range(a).domain(e);
10
+ break;
11
+ }
12
+ return this;
13
+ }
14
+ export {
15
+ t as i
16
+ };
@@ -0,0 +1,7 @@
1
+ const n = `# Integrasjonsguide
2
+
3
+ For maskinporten
4
+ `;
5
+ export {
6
+ n as default
7
+ };
@@ -0,0 +1,313 @@
1
+ const e = `# Integrasjonsguide
2
+
3
+ ID-porten tilbyr funksjonalitet for autentisering av sluttbrukere basert på autorisasjonskode-flyten, slik den er spesifisert i OpenID Connect Core 1.0 spesifikasjonen.
4
+
5
+ **Dette er den foretrukne flyten for de aller fleste tjenester** som skal bruke ID-porten som autentiseringstjeneste. Det kan finnes unntak, som for eksempel [mobilapp'er](oidc_auth_app.html) eller [javascript-applikasjoner](oidc_auth_spa.html), som vil ha en litt annen måte å bruke denne flyten på.
6
+
7
+ ## Overordna beskrivelse av bruksområdet
8
+
9
+ ID-porten tilbyr autentisering av brukere til sluttbrukertjenester. Autentiseringen blir utført av en OpenID Connect provider som utsteder ID-token til den aktuelle tjenesten.
10
+
11
+ \`\`\`mermaid
12
+ graph LR
13
+ end_user(Sluttbruker)
14
+ OP(ID-porten)
15
+ RP(Nett-tjeneste)
16
+ end_user -. autentiserer seg hos .-> OP
17
+ OP -. utsteder id_token .-> RP
18
+ end_user -. logger inn i .-> RP
19
+ \`\`\`
20
+
21
+ Følgende aktører inngår:
22
+
23
+ | Aktør | Beskrivelse | Begrep OIDC |
24
+ | -|-|-|
25
+ | Sluttbruker | Ønsker å logge inn til en offentlig tjeneste | End User |
26
+ | Nett-tjeneste | Sluttbruker-tjeneste tilbudt av en offentlig etat | Relying Party (RP) / Client (=klient) |
27
+ | ID-porten | ID-porten sin autentiseringstjeneste som usteder *ID-Token* til aktuelle tjenesten| OpenID Provider (OP) |
28
+
29
+ ## Beskrivelse av autorisasjonskode-flyten
30
+
31
+ \`\`\`mermaid
32
+ sequenceDiagram
33
+ Sluttbruker ->> Relying Party: Klikker login-knapp
34
+ Relying Party ->> Sluttbruker: Redirect med autentiseringsforespørsel
35
+ Sluttbruker ->> OpenID Provider: følg redirect...
36
+ note over Sluttbruker,OpenID Provider: Sluttbruker autentiserer seg (og evt. samtykker til forespurte scopes)
37
+ OpenID Provider ->> Sluttbruker: Redirect med autorisasjonscode
38
+ Sluttbruker ->> Relying Party: følg redirect...
39
+ Relying Party ->> OpenID Provider: forespørre token (/token)
40
+ OpenID Provider ->> Relying Party: id_token (evt. flere tokens)
41
+ note over Sluttbruker,Relying Party: Innlogget i tjenesten
42
+ \`\`\`
43
+
44
+ * Flyten starter med at en sluttbruker prøver å aksessere en gitt tjeneste ( Relying Party )
45
+ * Tjenesten krever innlogging og en redirect url til OpenID Connect provideren blir generert og returnert til sluttbrukeren. Denne redirecten representerer en [**autentiseringsforespørsel**]({{site.baseurl}}/docs/idporten/oidc/oidc_protocol_authorize.html), og har parametere som identifiserer den aktuelle tjenesten for provideren.
46
+ * Sluttbrukers browser kommer til **autorisasjonsendepunktet** hos provideren hvor forespørselen blir validert (f.eks. gyldig tjeneste og gyldig redirect_uri tilbake til tjenesten).
47
+ * Brukeren gjennomfører **innlogging i provideren**
48
+ * Provideren redirect'er brukeren tilbake til tjenestens forhåndsregistrere redirect url med en **autorisasjonskode**.
49
+ * Tjenesten bruker den mottatte autorisasjonskoden til å gjøre et direkteoppslag mot providerens [**token-endepunkt**]({{site.baseurl}}/docs/idporten/oidc/oidc_protocol_token.html). Tjenesten må autentisere seg mot token-endepunktet, såkalt *klient-autentisering* (enten med client_secret eller en signert forespørsel)
50
+ * Dersom klient-autentiseringen var velykket, valideres den mottatte autorisasjonskoden og et **ID-token** blir returnert til tjenesten.
51
+ * Tjenesten omsetter normalt ID-tokenet til en egen, lokal sesjon.
52
+ * Brukeren er nå autentisert for tjenesten og ønsket handling kan utføres
53
+
54
+ Merk: OpenID Connect bygger på OAuth2, og denne flyten er derfinert i OAuth2-spesifikasjonen. Siden *autentisering* ikke er et begrep i OAuth2 vil en ofte se at begrepet *autorisasjon* blir brukt selv om man egentlig snakker om *autentisering*
55
+
56
+
57
+ ## Sesjonshåndtering
58
+
59
+ Merk: Kunde og ID-porten holder egne sesjoner mot sluttbruker som ikke er avhengig av hverandre. Men Digitaliseringsdirektoratet anbefaler at kundene bruker samme sesjonstider som ID-porten.
60
+
61
+
62
+ ### Levetid for SSO-sesjonen i ID-porten
63
+
64
+ I ID-porten måles maksimum sesjonstid for en brukers SSO-sesjon og denne settes til 120 minutter fra første autentisering.
65
+
66
+ Ved inaktivitet over 30 minutter, vil SSO-sesjonen utløpe. Inaktivet måles som tiden mellom to autentiseringsforespørsler mot ID-porten.
67
+
68
+ Merk at ved passivt utløp av sesjon så vil det ikke bli sendt noen kall til kundens tjeneste.
69
+
70
+ Merk: id_tokenet returnert fra ID-porten vil inneholde en "expire (exp)" verdi. Denne verdien angir kun levetid for selve tokenet, dvs. en klient skal ikke akseptere et id_token etter at det utløpt. Denne verdien er ikke koblet mot den SSO-sesjonen hos ID-porten og gir ingen indikasjon på levetid på denne.
71
+
72
+ ### Levetid for kundens lokale sesjon
73
+
74
+ I en føderasjon skal medlemmene konfigurere systemene slik at sesjoner utløper ved inaktivitet etter høyst 30 minutter.
75
+
76
+ Det er valgfritt om timeout-perioden nullstilles hver gang brukerens nettleser forespør en av kundens tjeneste, eller om den er uavhengig av brukeraktivitet (fast timeout periode).
77
+
78
+ Etter lokal timeout hos en kunde, skal brukerens nettleser ved neste http-forespørsel sendes over til ID-porten med en autentiseringsforespørsel.
79
+
80
+ Det må bemerkes at lokal timeout hos en kunde ikke nødvendigvis medfører at brukeren blir tvunget til å logge på ID-porten. Hvis brukeren har en aktiv SSO-sesjon hos ID-porten, kan denne svare på forespørselen fra kunde uten brukerdialog (dvs. foreta single sign-on). Brukeren vil dermed ikke oppdage at sesjonen blir fornyet (bortsett fra at hans nettleser muligens ”blinker” et kort øyeblikk).
81
+
82
+ ### Tvungen re-autentisering
83
+
84
+ Hvis en tjenesteleverandør av sikkerhetsmessige grunner vil sikre seg at brukeren blir tvunget til aktiv pålogging i ID-porten, kan man sette parameteren prompt=login i autentiseringsforespørselen til ID-porten.
85
+
86
+ Det er også mulig å konfigurere tjenesten sin slik at den ikke deltar i felles SSO-sesjon (se [Isolert SSO-sesjon]({{site.baseurl}}/docs/idporten/oidc/oidc_func_nosso.html)).
87
+
88
+
89
+ ### Krav til utlogging
90
+
91
+ ID-porten tilbyr single signon-funksjonalitet (SSO) mellom alle integrerte tjenester. **Derfor må alle tjenester også implementere støtte for single logout (SLO).**
92
+
93
+
94
+ **En feilkonfigurert logout-håndtering hos én kunde kan ødelegge for utlogging hos andre kunder, og gjøre innbygger sårbar for angrep.**
95
+
96
+ Klienten må håndtere to forskjellige utloggings-scenarier:
97
+
98
+ 1. **Brukeren logger ut fra din tjeneste:** Du må redirecte brukeren til /endsession-endepunktet til ID-porten. ID-porten sørger for å logge brukeren ut av alle andre tjenester, og redirecter til slutt brukeren tilbake til deg.
99
+
100
+ 2. **Brukeren logger ut fra annen tjeneste:** Du vil motta en front_channel_logout-melding med en sesjonsidentifikator \`sid\` som du tidligere har mottatt i id_token. Basert på denne må du finne lokal brukersesjon og invalidere denne.
101
+
102
+
103
+ [Se full dokumentasjon om utlogging her]({{site.baseurl}}/docs/idporten/oidc/oidc_func_sso).
104
+
105
+
106
+ ## 1: Autentiseringsforespørsel til autorisasjons-endepunktet
107
+
108
+ Tjenesten/klienten sender en autentiseringsforespørsel ved å redirecte sluttbrukeren til autorisasjonsendepunktet.
109
+
110
+ Se [detaljert dokumentasjon for autorisasjonsendepunktet]({{site.baseurl}}/docs/idporten/oidc/oidc_protocol_authorize) for valgmuligheter.
111
+
112
+ Klienten må være forhåndsregistrert i ID-porten, se [klient-registrering]({{site.baseurl}}/docs/idporten/oidc/oidc_func_clientreg).
113
+
114
+
115
+ ### Eksempel på forespørsel
116
+
117
+ \`\`\`
118
+
119
+ GET https://login.idporten.no/authorize?
120
+
121
+ client_id=min_tjeneste&
122
+ redirect_uri=https%3A%2F%2Fmin.tjeneste.no%2Flogin_callback&
123
+
124
+ scope=openid+profile&
125
+ acr_values=idporten-loa-substantial&
126
+ response_type=code&
127
+ ui_locales=nb&
128
+
129
+ state=sV-423vokts9_CZdO9KZSV9xb35mlgzj_7BPTt-_khQ&
130
+ nonce=S6tRrJ3tWsilRZl7hqySoORosHDDq4l6du3dxDhXoWc&
131
+ code_challenge=HC9NRzz4QUaVMvl2TUYrWg_L54PBleKON4hapcIOydk
132
+ code_challenge_method=S256&
133
+
134
+ \`\`\`
135
+
136
+ Alle tjenester må bruke [PKCE]({{site.baseurl}}/docs/idporten/oidc/oidc_func_pkce), og blir sterkt anbefalt å bruke state og nonce i kallet.
137
+
138
+ For tjenester med høye krav til sikkerhet bør en i tillegg vurdere å bruke [PAR]({{site.baseurl}}/docs/idporten/oidc/oidc_protocol_par) til å første POSTe autentiseringsparametrene direkte til ID-porten før en redirecter, slik at disse parametrene ikke blir eksponert for manipulasjon av brukers browser.
139
+
140
+ ## 2: Bruker autentiserer seg
141
+
142
+ Bruker vil så autentisere seg mot ID-porten. ID-portens språk prioriteres slik:
143
+
144
+ - Bokmål er standardspråk dersom ingenting er oppgitt
145
+ - Dersom klient har oppgitt \`ui_locales\`, så vil dette språket bli brukt
146
+ - Dersom cookien IDPORTEN_SELECTED_LANGUAGE-cookien er satt, vil dette overstyre andre valg. Cookien blir satt kun for brukere som aktiv endrer språk i ID-portens GUI.
147
+
148
+ ## 3: Redirect tilbake til tjenesten
149
+
150
+ Etter at brukeren har logget inn vil det sendes en redirect tilbake til klienten til den forhåndsregistrerte \`redirect_uri\`. Redirecten vil vil inneholde et autorisasjonskode-parameter \`code\` som brukes til oppslag for å hente tokens. Koden er base64-enkoda og URL-safe.
151
+
152
+
153
+
154
+ ### Eksempel på respons: {#authresponse}
155
+
156
+ \`\`\`
157
+ GET https://min.tjeneste.no/login_callback?code=1JzjKYcPh4MIPP9YWxRfL-IivWblfKdiRLJkZtJFMT0&state=min_egendefinerte_state_verdi
158
+ \`\`\`
159
+ I testmiljø tillater vi redirect tilbake til localhost.
160
+
161
+ ## 4: Utstedelse av token fra token-endepunktet
162
+
163
+ Token-endepunktet brukes for utstedelse av tokens.
164
+
165
+
166
+ Bruk av endepunktet varierer litt med hvilken klient-autentiseringsmetode som benyttes. Følgende autentiseringsmetoder fra [OIDC kap. 9](http://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) støttes:
167
+
168
+ * **client_secret_basic** / **client_secret_post** - Klientautentisering basert på client_secret
169
+ * **private_key_jwt** - Klientautentisering basert på JWT'er signert med virksomhetssertifikater
170
+
171
+ Sistnevnte metode er anbefalt for klienter med høye krav til sikkerhet.
172
+
173
+ ##### Eksempel på forespørsel:
174
+
175
+
176
+ \`\`\`
177
+ POST /token
178
+ Content-Type: application/x-www-form-urlencoded
179
+ Authorization: Basic bWluX3RqZW5lc3RlOnBhc3N3b3Jk
180
+
181
+ grant_type=authorization_code&
182
+ redirect_uri=https%3A%2F%2Fmin.tjeneste.no%2Flogin_callback&
183
+ code=1JzjKYcPh4MIPP9YWxRfL-IivWblfKdiRLJkZtJFMT0%3D&
184
+ code_verifier=gEVARFlOi5LNYfVGSMHvhZCXoG_TPzdmXQQGqzKJkz0
185
+ \`\`\`
186
+
187
+ Se [detaljert dokumentasjon for token-endepunktet]({{site.baseurl}}/docs/idporten/oidc/oidc_protocol_token) for alle valgmuligheter.
188
+
189
+ Dersom forespørselen blir validert som gyldig, vil det returneres et eller flere token:
190
+
191
+ * **id_token**: Autentiseringsbevis, "hvem brukeren er"
192
+ * **access_token**: Tilgangs-token, forteller "hva brukeren kan få tilgang til"
193
+ * **refresh_token**: Brukes av klienten til å fornye access_token uten brukerinteraksjon (så lenge som autorisasjonen er gyldig)
194
+
195
+
196
+ \`\`\`
197
+ {
198
+ "access_token" : "eyJ4NWMiOlsiTUlJQ3NqQ0NBWnFnQXdJQkFnSUVZbSt1L3pBTkJna3Foa2lHOXcwQkFRc0ZBREFiTVJrd0Z3WURWUVFEREJCcFpIQnZjblJsYmkxemVYTjBaWE4wTUI0WERUSXlNRFV3TWpFd01UUXlNMW9YRFRJek1EVXdNakV3TVRReU0xb3dHekVaTUJjR0ExVUVBd3dRYVdSd2IzSjBaVzR0YzNsemRHVnpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMZTVuN3lXNFh2Y1J0d3RMazFVUEllakN5U3RmMUQ1akhCNnNQaUpSK3haR3JmejR4dXJJRlA4ekorbnI1OXRoblQrdVpuaFQwNzNwVUlNdkJsRCt1bjFiTWxENm9TZjJ6UTZpWmhFQ0V3bTBxdUk3RHpRcW93dGxGSUdxUTgzQ2Y4NEZjZDBVbVJiT0ZOUnJicDg3QkY2dkZzL3JsM0x0RHo4dXlWbVFXaGhubS9jR3F5ZGkxQWhXWi92YTVYdzR1SFoxYVNDOTgzK1EySllkSFZYRU45SXV4bWIvZVdlVmhzTVRXQ0FPbU4xMklvWVZHODFFOXMvMzJQZy82cFEyMkFNWjRqZzgwdGVMZTBZeWZGS2ppbUtWQnJkRTBnUXJmWThnemlBR3kwYnhhQTRBNTlneUZmcldKRTNhOE5tSHZxTHhhTE4yQ0hzcXhsQVhuRkNZd2NDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqY3NOVk43T0R2K1VDdlhGSVdnck0xQll4TGR0QTkvZ0QvU3ZzcGdIcjY5dUlPcHRxVTY1cklrMmllMDhPcjZRZXpTVnVRdkJ5a1U3cXgrZVFmV1N1OG1rWDRZa0VWcXBzYnh6Q0hneWEvTXJINzd2ZmV2UlhNRkk1QUlaVDU4TDdjSGovOWFYelpsRXhEVGo5bE5makFjcktCNm5kRS9rZVErUkUrdGdvM0c1Q0srVktINkJaMFJtOXQySDZBKzZxbEFZS0FCTFZ2dGFjekdKU3BQNUxrcGw0T1BscE5pY2M3MDVuQnpzYnBvMGd1WThNQjdqQnlKVWJRcXd6MCtkd3NNMWNQNkNTbFNUc3FNUWJaVjAzd1lCT014Si93dUt1Nnlyc0ZUV21sUi8rSGhvU3VkNUVBSnJHSGwvbnR6RmNBTExIcUk0dG92UFRkcGJTTVlnOXc9PSJdLCJraWQiOiJ1clFQU1pDU1hYSkhiTm9XMFZFbmtCcWJOZDFDeXdmT1RJZGNxQlRISk9FIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJFUklGdnBEN3BNNmo2WHZybnowbWw1M1YtTF9XNVpEU3Mza1lNczZkVFZjIiwiYWNyIjoiaWRwb3J0ZW4tbG9hLXN1YnN0YW50aWFsIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSIsImlzcyI6Imh0dHBzOi8vaWRwb3J0ZW4uZGV2IiwiY2xpZW50X2FtciI6ImNsaWVudF9zZWNyZXRfYmFzaWMiLCJwaWQiOiIyMTg3OTQ5ODAxMiIsImV4cCI6MTY3ODM3NjA5MiwiaWF0IjoxNjc4Mzc1NDkyLCJqdGkiOiJVUHc4YTYtdUtHbyIsImNsaWVudF9pZCI6ImRlbW9jbGllbnRfaWRwb3J0ZW5fc3lzdGVzdCIsImNvbnN1bWVyIjp7ImF1dGhvcml0eSI6ImlzbzY1MjMtYWN0b3JpZC11cGlzIiwiSUQiOiIwMTkyOjk5MTgyNTgyNyJ9fQ.CD2j7-F3GCggX0Owh_dm-hZzLxq8RIj2Ry51B2-KrIBD4QzmsHQ9KrsNgtL9YFBLajcUqEm2QPTniTo8_JZqP_DyjiaOFV0mati84ifoIEziuHH9MXb0MiFtO0hlpFdic-i_zoiO7IBal0htCkt2kTrSKokYMp2U4dnuMkw32aK45HCHt2h1P2HWuI4EBk_KAFsOEdO2wCAJHS9jH4WTf7Q-Xx1TyzEbnsb8LuvJ8vOxKCzHgPkR5LCgdXq7gYUOxSuORYa_9MEhAnLi0riRTAMxngB3pk8ZvrrJTscC0zE0a5-xjqA0BJ9bqaHrobP13LKXRR-ol1WHTb4QHH1-qg",
199
+ "refresh_token" : "eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..WES9oML4Je5S3qxXSPZOXg.5dJtItCTk7920ihGtylDL3ytHmA-yjaN1F0FDa2zn560A6RPga5R9BUYDEZDCVzAHtaewsdg4W_b79daTjVinTY5wqSfi5fb4JnwATx1ecxu2Pjo4QronnfZrBSD3ezCrvgcxtAFJ1w9uJymYhCbWc8rqL7X7H5wdHmNTbUzaT_WGL1Ymvqe4KDgF2XLuvpxs81sWJtgW5P1vaTrf58sA_oDUJZC9qZHNrIgW4JNp7E9au0cX5H0kF1wrGnkgiALAPVYqRJsd9IDc0kLnUKvtVKKRAja098CgpmPRSs61KVz-nPmtNvVMZJXmqsQnvW9qimkxPtnTUnxyFtKiHdB-wc2Q8Gv5bUC3w7BZR5-F_DfCVzcxlraay2fSN1gWpSdR7nFqsJI4TQNBUcPEKvV3wKxdAcQgrxgYtP0jQnZ14NvaNzO5eVE1DILXznWICZ5LGpzXb7vd7Sfk23kXX7xs7beGQ5dqRnnK9hH5NEBsW1rbDOlbPES5fDrWII0n9i9-aKWBVBbi34qkQL-nKtl-WxH1bJD2FhPZw3LEfuKk_XUDkMFGfP2uoFtf7KUjb7pfqFf9d8R_ZswFH6jYDd-ohzS6p-04GC71Sw8uWCpTraYtNNkOhkqVapOKN-K2U_6oquqqJXInrXZ0Ng-PL4UOdA75I_ccGTtKd-9jjnzwoxF3wDLRy0OwwkHPdvMSYo-KEK4fBcaOFQXCu7wU-IbzF96vOESDtPi4Xho2iuTsb-NSl2WpW4P7rVxFhJsjH0g7a64278vgYx5b9nvpQkjnh-42B-xgvcQsfATnW4cffa4xGQ-QpnxI2U9FRSWBcI_7vdkdVPpilum39ub-8Qv5V-cDje6cuOLj-izJDhHtT8GisRxOAzUlkBkkonmMyxgJaCR4L0QjSBpQpemD44sKQxIOYFNjT7AcAOR5EsHwiABzAgiJIe1erZpno8Zrbh2RWg7mUs4__Kvhzpxr8hjqbldUJI4okhg9SrWpFqoJoa7syNKv_lfm8twCDGAUmfRlk8TTdXrkhEr1bXpS3Q54kLtfVbKfkGWdHVanv1aIeTFCGbN2PXGk29Q2B6yAvyVoHFLm7gniZJKmZByYDtCvF5qwbVkmPi3vNOOQma9kOo_y8Gx--FVoZ0l5ST2MJx0T3FadspcR75HCP5WEARyktuYlJG2PxvPtNBNf7E6Tak3yS8p3pQzyeeVwYgNFkGpMdmax7aCAQEAm-5x7uXmX_1b6S7SX94uqh4pxYWvy0eLHmD3mtmfzfSQBgLEr7VSZVskM8MPHsUrO4wIhwXWjyV_NTRN9Jeofb3Zvmw1jsqK3vxVdHhc6iZwpRrbyWkQdb-MN9uv3cR4Dki1yXo3p50xL21BZMJB1SH_eHwTpWMJhZ1MjMV2VTRooJ3Nh4MiMMkZ7UTRPjLsI9UwsaonzexM1ApE7eT2UxxGUZNUd5JE0--7WDcowp45E0Hb2r6EFH2wLrFOAPuzhsYG3d88x_-VySUhvnzGV8C-9bjGZKoH1cdvq_ToqejytTpYzZ9QwOSwaPIypOauSGX6W7ruCKy9YbZgIngD8z0uxlXmQzm8v6jIVAZmLktVjHfY5gUm94hNF7HckDahlmtz2izYhSaVZA3vsaNPDDTmqNAalyD2zuelD-084_UdoKBRoSBFf1WaDBO1c0-SBqeBDFfM45EaYsAUZaYb133XM78W-MYA0xLGGQ1yLsqB7GQjlPRIK9HtO9YfpXIeSJ2culmPIopSBwkrvhCFOi5lZdkj2_Q.h25pAv8_-iKYQgxPtcF5iQ",
200
+ "scope" : "openid profile",
201
+ "id_token" : "eyJ4NWMiOlsiTUlJQ3NqQ0NBWnFnQXdJQkFnSUVZbSt1L3pBTkJna3Foa2lHOXcwQkFRc0ZBREFiTVJrd0Z3WURWUVFEREJCcFpIQnZjblJsYmkxemVYTjBaWE4wTUI0WERUSXlNRFV3TWpFd01UUXlNMW9YRFRJek1EVXdNakV3TVRReU0xb3dHekVaTUJjR0ExVUVBd3dRYVdSd2IzSjBaVzR0YzNsemRHVnpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMZTVuN3lXNFh2Y1J0d3RMazFVUEllakN5U3RmMUQ1akhCNnNQaUpSK3haR3JmejR4dXJJRlA4ekorbnI1OXRoblQrdVpuaFQwNzNwVUlNdkJsRCt1bjFiTWxENm9TZjJ6UTZpWmhFQ0V3bTBxdUk3RHpRcW93dGxGSUdxUTgzQ2Y4NEZjZDBVbVJiT0ZOUnJicDg3QkY2dkZzL3JsM0x0RHo4dXlWbVFXaGhubS9jR3F5ZGkxQWhXWi92YTVYdzR1SFoxYVNDOTgzK1EySllkSFZYRU45SXV4bWIvZVdlVmhzTVRXQ0FPbU4xMklvWVZHODFFOXMvMzJQZy82cFEyMkFNWjRqZzgwdGVMZTBZeWZGS2ppbUtWQnJkRTBnUXJmWThnemlBR3kwYnhhQTRBNTlneUZmcldKRTNhOE5tSHZxTHhhTE4yQ0hzcXhsQVhuRkNZd2NDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFqY3NOVk43T0R2K1VDdlhGSVdnck0xQll4TGR0QTkvZ0QvU3ZzcGdIcjY5dUlPcHRxVTY1cklrMmllMDhPcjZRZXpTVnVRdkJ5a1U3cXgrZVFmV1N1OG1rWDRZa0VWcXBzYnh6Q0hneWEvTXJINzd2ZmV2UlhNRkk1QUlaVDU4TDdjSGovOWFYelpsRXhEVGo5bE5makFjcktCNm5kRS9rZVErUkUrdGdvM0c1Q0srVktINkJaMFJtOXQySDZBKzZxbEFZS0FCTFZ2dGFjekdKU3BQNUxrcGw0T1BscE5pY2M3MDVuQnpzYnBvMGd1WThNQjdqQnlKVWJRcXd6MCtkd3NNMWNQNkNTbFNUc3FNUWJaVjAzd1lCT014Si93dUt1Nnlyc0ZUV21sUi8rSGhvU3VkNUVBSnJHSGwvbnR6RmNBTExIcUk0dG92UFRkcGJTTVlnOXc9PSJdLCJraWQiOiJ1clFQU1pDU1hYSkhiTm9XMFZFbmtCcWJOZDFDeXdmT1RJZGNxQlRISk9FIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJFUklGdnBEN3BNNmo2WHZybnowbWw1M1YtTF9XNVpEU3Mza1lNczZkVFZjIiwiYW1yIjpbIlRlc3RJRCJdLCJpc3MiOiJodHRwczovL2lkcG9ydGVuLmRldiIsInBpZCI6IjIxODc5NDk4MDEyIiwibG9jYWxlIjoibmIiLCJub25jZSI6IlM2dFJySjN0V3NpbFJabDdocXlTb09Sb3NIRERxNGw2ZHUzZHhEaFhvV2MiLCJzaWQiOiJpWlpicC1hX3dTVWZmT1N3bW4xV2VvOUVvYXV5eVFMNnBxdjBfLThiUkhrIiwiYXVkIjoiZGVtb2NsaWVudF9pZHBvcnRlbl9zeXN0ZXN0IiwiYWNyIjoiaWRwb3J0ZW4tbG9hLXN1YnN0YW50aWFsIiwiYXV0aF90aW1lIjoxNjc4Mzc1NDkxLCJleHAiOjE2NzgzNzU2MTIsImlhdCI6MTY3ODM3NTQ5MiwianRpIjoicHJrUW91Y1FKZjgifQ.rRaBSFextSifr-VsClfaJzHW9Eb5eg_BKw5OLf6MOvAU8S4C1sqz-R0y7eCPk4zPbj6H2ZLB5MVbFEa-vy1Io9COqU9-9Uh1gi0Qg58ECoMjb5tXyWA5_Vg9IiGhiAC3EfqF5L1gyMd84KNbkNF22Bx-atI1IZq2hsW6FkfK5fn2tWHfYdofOL8oiQRlwU78JaoMxRq_buc3jKf8pc0fB08VGT-RDJKlEr6ha7Z3K5Q7i-EUwLmlqRoW1Hi-PQhSgPYEVjSJ1FcB1V-R24AGCu6NF6Ax3F24Su4WLw_cEWYDu6FAbefvQrg6lBVdpN029-O1OZlLduembjOB96UgMg",
202
+ "token_type" : "Bearer",
203
+ "expires_in" : 600
204
+ }
205
+ \`\`\`
206
+
207
+
208
+
209
+ ### id_token
210
+
211
+ id_tokenet inneholder identiteten til den autentiserte brukeren - det forteller det hvem brukeren er, men ikke hvilke tilganger brukeren har.
212
+
213
+ Normal bruker tjenesten id_tokenet kun til å opprette en egen, lokal sesjon. Id_tokenet har derfor en ganske kort gyldighetsperiode.
214
+
215
+ #### Eksempel:
216
+ \`\`\`
217
+ {
218
+ "sub": "ERIFvpD7pM6j6Xvrnz0ml53V-L_W5ZDSs3kYMs6dTVc",
219
+ "amr": [
220
+ "TestID"
221
+ ],
222
+ "iss": "https://idporten.no",
223
+ "pid": "21879498012",
224
+ "locale": "nb",
225
+ "nonce": "S6tRrJ3tWsilRZl7hqySoORosHDDq4l6du3dxDhXoWc",
226
+ "sid": "iZZbp-a_wSUffOSwmn1Weo9EoauyyQL6pqv0_-8bRHk",
227
+ "aud": "min_tjeneste",
228
+ "acr": "idporten-loa-substantial",
229
+ "auth_time": 1678375491,
230
+ "exp": 1678375612,
231
+ "iat": 1678375492,
232
+ "jti": "prkQoucQJf8"
233
+ }
234
+ \`\`\`
235
+
236
+
237
+ **Korrekt validering av id_token** av klienten er kritisk for sikkerheten i løsningen. Det er spesielt viktig å validere at faktisk brukt sikkerhetsnivå \`acr\` er ihenhold til forespurt nivå.
238
+
239
+ Tjenesteleverandører som tar i bruk tjenesten må utføre validering i henhold til kapittel [3.1.3.7 - ID Token Validation i OpenID Connect Core 1.0 spesifikasjonen](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation).
240
+
241
+ [Klikk her for full dokumentasjon av id_token i ID-porten]({{site.baseurl}}/docs/idporten/oidc/oidc_protocol_id_token).
242
+
243
+
244
+
245
+ ### access_token
246
+
247
+ Access_tokenet (tilgangstoken) gir klienten [tilgang til APIer hos tredjepart]({{site.baseurl}}/docs/idporten/oidc/oidc_auth_oauth2) på vegne av den autentiserte brukeren.
248
+
249
+ Levetiden på aksess_tokenet er som oftest relativt kort (typisk 120 sekunder). Dersom tokenet er utløpt, kan klienten forespørre nytt acess_token ved å bruke refresh_tokenet. Det gjennomføres da en klient-autentisering, for å sikre at tokens ikke blir utlevert til feil part.
250
+
251
+ Levetider kan også tilpasses per klient. Men merk at dette kan overstyres av API-tilbyder alt etter [hvilke oauth2 scopes]({{site.baseurl}}/docs/idporten/oidc/oidc_protocol_scope) som er i tokenet.
252
+
253
+ Det er viktig å være klar over at access_token+refresh_token er **uavhengig** av innlogginga og tilhørende SSO-sesjon i ID-porten. Selv om brukeren gjennomfører en utlogging, eller sso-sesjonen timer ut, så vil normalt autorisasjonen med tilhørende access_token og refresh_token være gyldige fram til deres levetider utløper.
254
+
255
+ Merk til slutt at en enkelt bruker bare kan ha en autorisasjon mot samme klient om gangen. Dersom klienten har en gyldig autorisasjon med gitte scopes, og så utfører en ny autorisasjon med andre scopes, så vil ny access_token kun inneholde scopene fra den nyeste autorisasjonen. ID-porten "husker" altså ikke samtykkede scopes over flere autorisasjoner.
256
+
257
+ [Klikk her for full dokumentasjon av access_token-formatet til ID-porten]({{site.baseurl}}/docs/idporten/oidc/oidc_protocol_access_token).
258
+
259
+
260
+
261
+ ## 5: Userinfo-endepunkt
262
+
263
+ Ved å forespørre scopet *profile* vil klienttjenesten sammen med id tokenet også få utstedt et access_token (og evnt. refresh_token) som kan benyttes mot providerens userinfo-endepunkt.
264
+
265
+ Dette endepunktet kan i henhold til standarden benyttes for å hente ytterligere data om brukeren enn det som blir eksponert via ID tokenet. Da ID-porten generelt har lite data om sluttbrukeren har dette endepunktet begrenset verdi i de fleste tilfeller. Personnummer og valgt språk under innlogging er de
266
+ dataene som vil bli eksponert her.
267
+
268
+
269
+ \`\`\`
270
+ GET https://<<miljø>>/idporten-oidc-provider/userinfo
271
+ Authorization: Bearer eyJA...
272
+
273
+ Respons:
274
+ {
275
+ "sub" : "NR8vTTPrM3T7rWf8dXxeWLZpxEMsug4E7pxqJuh9wIM=",
276
+ "pid" : "23079421936",
277
+ "locale" : "nb"
278
+ }
279
+ \`\`\`
280
+
281
+
282
+ ## 6: Kontaktopplysninger fra Kontakt- og Reservasjonsregisteret
283
+
284
+ Kontakt-opplysninger knyttet til innlogget bruker, er [tilgjengelig på et eget endepunkt]({{site.baseurl}}/docs/Kontaktregisteret/Brukerspesifikt-oppslag_rest) dersom access_token inneholder \`krr:user/kontaktinformasjon.read\`-scopet.
285
+
286
+
287
+
288
+ ## Om OpenID Connect
289
+
290
+ OpenID Connect er en protokoll for autentisering basert på OAuth2. Se [http://openid.net/connect/faq/](http://openid.net/connect/faq/) for mer informasjon.
291
+
292
+ De implementerte tjenestene bygger på (deler av) følgende standarder og spesifikasjoner:
293
+
294
+ * OpenID Connect Core 1.0 - [http://openid.net/specs/openid-connect-core-1_0.html](http://openid.net/specs/openid-connect-core-1_0.html)
295
+ * OpenID Connect Discovery
296
+ [http://openid.net/specs/openid-connect-discovery-1_0.html](http://openid.net/specs/openid-connect-discovery-1_0.html)
297
+
298
+ * OpenID Connect Session Management
299
+ [http://openid.net/specs/openid-connect-session-1_0.html](http://openid.net/specs/openid-connect-session-1_0.html)
300
+ * OpenID Connect Front-Channel Logout
301
+ [http://openid.net/specs/openid-connect-frontchannel-1_0.html](http://openid.net/specs/openid-connect-frontchannel-1_0.html)
302
+ * OAuth 2.0 Form Post Response Mode
303
+ [http://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html](http://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html)
304
+ * OAuth 2.0 Token Introspection
305
+ [https://tools.ietf.org/html/rfc7662](https://tools.ietf.org/html/rfc7662)
306
+ * Proof Key for Code Exchange by OAuth Public Clients
307
+ [https://tools.ietf.org/html/rfc7636](https://tools.ietf.org/html/rfc7636)
308
+
309
+ * IETF RFC6749 The OAuth 2.0 Authorization Framework - [https://tools.ietf.org/html/rfc6749](https://tools.ietf.org/html/rfc6749)
310
+ * IETF RFC7523 JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants - [https://tools.ietf.org/html/rfc7523](https://tools.ietf.org/html/rfc7523)`;
311
+ export {
312
+ e as default
313
+ };