Files
AudioBookRequest/docs/tutorials/oidc/index.html
2025-08-22 13:02:33 +00:00

458 lines
42 KiB
HTML

<!doctype html>
<html itemscope itemtype="http://schema.org/WebPage" lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="alternate" type="text/html" href="https://markbeep.github.io/AudioBookRequest/docs/tutorials/oidc/_print/">
<link rel="alternate" type="application/rss&#43;xml" href="https://markbeep.github.io/AudioBookRequest/docs/tutorials/oidc/index.xml">
<meta name="robots" content="noindex, nofollow">
<link rel="shortcut icon" href="/AudioBookRequest/favicons/favicon.ico" >
<link rel="apple-touch-icon" href="/AudioBookRequest/favicons/apple-touch-icon-180x180.png" sizes="180x180">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-36x36.png" sizes="36x36">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-48x48.png" sizes="48x48">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-72x72.png" sizes="72x72">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-144x144.png" sizes="144x144">
<link rel="icon" type="image/png" href="/AudioBookRequest/favicons/android-192x192.png" sizes="192x192">
<title>OpenID Connect | AudioBookRequest Docs</title>
<meta name="description" content="Setting up OIDC login">
<meta property="og:url" content="https://markbeep.github.io/AudioBookRequest/docs/tutorials/oidc/">
<meta property="og:site_name" content="AudioBookRequest Docs">
<meta property="og:title" content="OpenID Connect">
<meta property="og:description" content="Setting up OIDC login">
<meta property="og:locale" content="en">
<meta property="og:type" content="website">
<meta itemprop="name" content="OpenID Connect">
<meta itemprop="description" content="Setting up OIDC login">
<meta itemprop="dateModified" content="2025-08-22T15:01:53+02:00">
<meta itemprop="wordCount" content="546">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="OpenID Connect">
<meta name="twitter:description" content="Setting up OIDC login">
<link href="/AudioBookRequest/scss/main.css" rel="stylesheet">
<script
src="https://code.jquery.com/jquery-3.7.1.min.js"
integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g=="
crossorigin="anonymous"></script>
</head>
<body class="td-section">
<header>
<nav class="td-navbar js-navbar-scroll" data-bs-theme="dark">
<div class="container-fluid flex-column flex-md-row">
<a class="navbar-brand" href="/AudioBookRequest/"><span class="navbar-brand__logo navbar-logo"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500"><g><path style="fill:#fff" d="M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z"/><g><g><g><path style="fill:#767676" d="M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z"/></g></g></g><g><g><path style="fill:#5b7fc0" d="M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z"/><path style="opacity:.3;fill:#fff" d="M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z"/><g><defs><path id="SVGID_1_" d="M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z"/></defs><clipPath id="SVGID_2_"><use xlink:href="#SVGID_1_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_2_);fill:#fff" d="M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z"/><path style="opacity:.13;clip-path:url(#SVGID_2_);fill:#020202" d="M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z"/></g><g><defs><path id="SVGID_3_" d="M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z"/></defs><clipPath id="SVGID_4_"><use xlink:href="#SVGID_3_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_4_);fill:#5b7fc0" d="M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z"/></g></g><rect x="198.8952" y="225.1043" style="fill:#5b7fc0" width="122.6266" height="13.8671"/></g><g><path style="fill:#d95140" d="M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zm7.993 21.8577c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z"/><path style="opacity:.3;fill:#fff" d="M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zm7.9941 21.8613c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z"/><g><defs><path id="SVGID_5_" d="M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z"/></defs><clipPath id="SVGID_6_"><use xlink:href="#SVGID_5_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_6_);fill:#fff" d="M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z"/><path style="opacity:.13;clip-path:url(#SVGID_6_);fill:#020202" d="M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z"/></g><g><defs><path id="SVGID_7_" d="M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zm7.9941 21.8613c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z"/></defs><clipPath id="SVGID_8_"><use xlink:href="#SVGID_7_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_8_);fill:#d95140" d="M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z"/></g><rect x="198.8952" y="170.69" style="fill:#d95140" width="122.6266" height="13.8671"/></g><g><g><path style="fill:#56a55c" d="M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z"/><path style="opacity:.3;fill:#fff" d="M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z"/><g><defs><path id="SVGID_9_" d="M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z"/></defs><clipPath id="SVGID_10_"><use xlink:href="#SVGID_9_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_10_);fill:#fff" d="M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z"/><path style="opacity:.13;clip-path:url(#SVGID_10_);fill:#020202" d="M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z"/></g><g><defs><path id="SVGID_11_" d="M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z"/></defs><clipPath id="SVGID_12_"><use xlink:href="#SVGID_11_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_12_);fill:#56a55c" d="M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z"/></g></g><rect x="199.3456" y="279.5436" style="fill:#56a55c" width="122.6266" height="13.8671"/></g><g><g><path style="fill:#f1bc42" d="M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z"/><path style="opacity:.3;fill:#fff" d="M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z"/><g><defs><path id="SVGID_13_" d="M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z"/></defs><clipPath id="SVGID_14_"><use xlink:href="#SVGID_13_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_14_);fill:#fff" d="M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z"/><path style="opacity:.13;clip-path:url(#SVGID_14_);fill:#020202" d="M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z"/></g><g><defs><path id="SVGID_15_" d="M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z"/></defs><clipPath id="SVGID_16_"><use xlink:href="#SVGID_15_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_16_);fill:#f1bc42" d="M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z"/></g></g><rect x="198.8952" y="333.6497" style="fill:#f1bc42" width="122.6266" height="13.8671"/></g></g></svg></span><span class="navbar-brand__name">AudioBookRequest Docs</span></a>
<div class="td-navbar-nav-scroll ms-md-auto" id="main_navbar">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" href="/AudioBookRequest/docs/"><span>Documentation</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="/AudioBookRequest/community/"><span>Community</span></a>
</li>
<li class="td-light-dark-menu nav-item dropdown">
<svg xmlns="http://www.w3.org/2000/svg" class="d-none">
<symbol id="check2" viewBox="0 0 16 16">
<path d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/>
</symbol>
<symbol id="circle-half" viewBox="0 0 16 16">
<path d="M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/>
</symbol>
<symbol id="moon-stars-fill" viewBox="0 0 16 16">
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z"/>
<path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z"/>
</symbol>
<symbol id="sun-fill" viewBox="0 0 16 16">
<path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/>
</symbol>
</svg>
<button class="btn btn-link nav-link dropdown-toggle d-flex align-items-center"
id="bd-theme"
type="button"
aria-expanded="false"
data-bs-toggle="dropdown"
data-bs-display="static"
aria-label="Toggle theme (auto)">
<svg class="bi my-1 theme-icon-active"><use href="#circle-half"></use></svg>
</button>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
<li>
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="light" aria-pressed="false">
<svg class="bi me-2 opacity-50"><use href="#sun-fill"></use></svg>
Light
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
</button>
</li>
<li>
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="dark" aria-pressed="false">
<svg class="bi me-2 opacity-50"><use href="#moon-stars-fill"></use></svg>
Dark
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
</button>
</li>
<li>
<button type="button" class="dropdown-item d-flex align-items-center active" data-bs-theme-value="auto" aria-pressed="true">
<svg class="bi me-2 opacity-50"><use href="#circle-half"></use></svg>
Auto
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
</button>
</li>
</ul>
</li>
</ul>
</div>
<div class="d-none d-lg-block">
<div class="td-search">
<div class="td-search__icon"></div>
<input type="search" class="td-search__input form-control td-search-input" placeholder="Search this site…" aria-label="Search this site…" autocomplete="off">
</div>
</div>
</div>
</nav>
</header>
<div class="container-fluid td-outer">
<div class="td-main">
<div class="row flex-xl-nowrap">
<aside class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none">
<div id="td-sidebar-menu" class="td-sidebar__inner">
<form class="td-sidebar__search d-flex align-items-center">
<div class="td-search">
<div class="td-search__icon"></div>
<input type="search" class="td-search__input form-control td-search-input" placeholder="Search this site…" aria-label="Search this site…" autocomplete="off">
</div>
<button class="btn btn-link td-sidebar__toggle d-md-none p-0 ms-3 fas fa-bars" type="button" data-bs-toggle="collapse" data-bs-target="#td-section-nav" aria-controls="td-section-nav" aria-expanded="false" aria-label="Toggle section navigation">
</button>
</form>
<nav class="td-sidebar-nav collapse" id="td-section-nav">
<ul class="td-sidebar-nav__section pe-md-3 ul-0">
<li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id="m-audiobookrequestdocs-li">
<a href="/AudioBookRequest/docs/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section tree-root" id="m-audiobookrequestdocs"><span class="">Documentation</span></a>
<ul class="ul-1">
<li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id="m-audiobookrequestdocsgetting-started-li">
<a href="/AudioBookRequest/docs/getting-started/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocsgetting-started"><span class="">Getting Started</span></a>
<ul class="ul-2 foldable">
<li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id="m-audiobookrequestdocsgetting-startedrunning-the-app-li">
<a href="/AudioBookRequest/docs/getting-started/running-the-app/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocsgetting-startedrunning-the-app"><span class="">Running the app</span></a>
<ul class="ul-3 foldable">
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocsgetting-startedrunning-the-appdocker-li">
<a href="/AudioBookRequest/docs/getting-started/running-the-app/docker/" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id="m-audiobookrequestdocsgetting-startedrunning-the-appdocker"><span class="">Docker</span></a>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocsgetting-startedrunning-the-appdocker-compose-li">
<a href="/AudioBookRequest/docs/getting-started/running-the-app/docker-compose/" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id="m-audiobookrequestdocsgetting-startedrunning-the-appdocker-compose"><span class="">Docker Compose</span></a>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocsgetting-startedrunning-the-appkubernetes-li">
<a href="/AudioBookRequest/docs/getting-started/running-the-app/kubernetes/" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id="m-audiobookrequestdocsgetting-startedrunning-the-appkubernetes"><span class="">Kubernetes</span></a>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocsgetting-startedrunning-the-appbare-metal-li">
<a href="/AudioBookRequest/docs/getting-started/running-the-app/bare-metal/" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id="m-audiobookrequestdocsgetting-startedrunning-the-appbare-metal"><span class="">Bare Metal</span></a>
</li>
</ul>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocsgetting-startedfirst-login-li">
<a href="/AudioBookRequest/docs/getting-started/first-login/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocsgetting-startedfirst-login"><span class="">First Login</span></a>
</li>
</ul>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id="m-audiobookrequestdocstutorials-li">
<a href="/AudioBookRequest/docs/tutorials/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocstutorials"><span class="">Tutorials</span></a>
<ul class="ul-2 foldable">
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocstutorialsnotifications-li">
<a href="/AudioBookRequest/docs/tutorials/notifications/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocstutorialsnotifications"><span class="">Notifications</span></a>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id="m-audiobookrequestdocstutorialsapi-li">
<a href="/AudioBookRequest/docs/tutorials/api/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocstutorialsapi"><span class="">API</span></a>
<ul class="ul-3 foldable">
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocstutorialsapiindexers-li">
<a href="/AudioBookRequest/docs/tutorials/api/indexers/" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id="m-audiobookrequestdocstutorialsapiindexers"><span class="">Indexers</span></a>
</li>
</ul>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child active-path" id="m-audiobookrequestdocstutorialsoidc-li">
<a href="/AudioBookRequest/docs/tutorials/oidc/" class="align-left ps-0 active td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocstutorialsoidc"><span class="td-sidebar-nav-active-item">OpenID Connect</span></a>
</li>
</ul>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id="m-audiobookrequestdocsconcepts-li">
<a href="/AudioBookRequest/docs/concepts/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocsconcepts"><span class="">Concepts</span></a>
<ul class="ul-2 foldable">
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocsconceptsenvironment-variables-li">
<a href="/AudioBookRequest/docs/concepts/environment-variables/" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id="m-audiobookrequestdocsconceptsenvironment-variables"><span class="">Environment Variables</span></a>
</li>
</ul>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocslocal-development-li">
<a href="/AudioBookRequest/docs/local-development/" class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id="m-audiobookrequestdocslocal-development"><span class="">Local Development</span></a>
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id="m-audiobookrequestdocscontribution-guidelines-li">
<a href="/AudioBookRequest/docs/contribution-guidelines/" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id="m-audiobookrequestdocscontribution-guidelines"><span class="">Contribution Guidelines</span></a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</aside>
<aside class="d-none d-xl-block col-xl-2 td-sidebar-toc d-print-none">
<div class="td-page-meta ms-2 pb-1 pt-2 mb-0">
<a href="https://github.com/markbeep/AudioBookRequest/tree/main/docs/content/docs/tutorials/oidc/_index.md" class="td-page-meta--view td-page-meta__view" target="_blank" rel="noopener"><i class="fa-solid fa-file-lines fa-fw"></i> View page source</a>
<a href="https://github.com/markbeep/AudioBookRequest/edit/main/docs/content/docs/tutorials/oidc/_index.md" class="td-page-meta--edit td-page-meta__edit" target="_blank" rel="noopener"><i class="fa-solid fa-pen-to-square fa-fw"></i> Edit this page</a>
<a href="https://github.com/markbeep/AudioBookRequest/new/main/docs/content/docs/tutorials/oidc?filename=change-me.md&amp;value=---%0Atitle%3A&#43;%22Long&#43;Page&#43;Title%22%0AlinkTitle%3A&#43;%22Short&#43;Nav&#43;Title%22%0Aweight%3A&#43;100%0Adescription%3A&#43;%3E-%0A&#43;&#43;&#43;&#43;&#43;Page&#43;description&#43;for&#43;heading&#43;and&#43;indexes.%0A---%0A%0A%23%23&#43;Heading%0A%0AEdit&#43;this&#43;template&#43;to&#43;create&#43;your&#43;new&#43;page.%0A%0A%2A&#43;Give&#43;it&#43;a&#43;good&#43;name%2C&#43;ending&#43;in&#43;%60.md%60&#43;-&#43;e.g.&#43;%60getting-started.md%60%0A%2A&#43;Edit&#43;the&#43;%22front&#43;matter%22&#43;section&#43;at&#43;the&#43;top&#43;of&#43;the&#43;page&#43;%28weight&#43;controls&#43;how&#43;its&#43;ordered&#43;amongst&#43;other&#43;pages&#43;in&#43;the&#43;same&#43;directory%3B&#43;lowest&#43;number&#43;first%29.%0A%2A&#43;Add&#43;a&#43;good&#43;commit&#43;message&#43;at&#43;the&#43;bottom&#43;of&#43;the&#43;page&#43;%28%3C80&#43;characters%3B&#43;use&#43;the&#43;extended&#43;description&#43;field&#43;for&#43;more&#43;detail%29.%0A%2A&#43;Create&#43;a&#43;new&#43;branch&#43;so&#43;you&#43;can&#43;preview&#43;your&#43;new&#43;file&#43;and&#43;request&#43;a&#43;review&#43;via&#43;Pull&#43;Request.%0A" class="td-page-meta--child td-page-meta__child" target="_blank" rel="noopener"><i class="fa-solid fa-pen-to-square fa-fw"></i> Create child page</a>
<a href="https://github.com/markbeep/AudioBookRequest/issues/new?title=OpenID%20Connect" class="td-page-meta--issue td-page-meta__issue" target="_blank" rel="noopener"><i class="fa-solid fa-list-check fa-fw"></i> Create documentation issue</a>
<a href="https://github.com/markbeep/AudioBookRequest/issues/new" class="td-page-meta--project td-page-meta__project-issue" target="_blank" rel="noopener"><i class="fa-solid fa-list-check fa-fw"></i> Create project issue</a>
<a id="print" href="/AudioBookRequest/docs/tutorials/oidc/_print/"><i class="fa-solid fa-print fa-fw"></i> Print entire section</a>
</div>
<div class="td-toc">
<nav id="TableOfContents">
<ul>
<li><a href="#setup-a-provider-on-authentik">Setup a provider on Authentik</a></li>
<li><a href="#setup-settings-in-abr">Setup settings in ABR</a></li>
<li><a href="#groups">Groups</a></li>
</ul>
</nav>
</div>
<div class="taxonomy taxonomy-terms-cloud taxo-tags">
<h5 class="taxonomy-title">Tag Cloud</h5>
<ul class="taxonomy-terms">
<li><a class="taxonomy-term" href="https://markbeep.github.io/AudioBookRequest/tags/development/" data-taxonomy-term="development"><span class="taxonomy-label">Development</span><span class="taxonomy-count">1</span></a></li>
<li><a class="taxonomy-term" href="https://markbeep.github.io/AudioBookRequest/tags/docker/" data-taxonomy-term="docker"><span class="taxonomy-label">Docker</span><span class="taxonomy-count">3</span></a></li>
<li><a class="taxonomy-term" href="https://markbeep.github.io/AudioBookRequest/tags/local/" data-taxonomy-term="local"><span class="taxonomy-label">Local</span><span class="taxonomy-count">1</span></a></li>
<li><a class="taxonomy-term" href="https://markbeep.github.io/AudioBookRequest/tags/setup/" data-taxonomy-term="setup"><span class="taxonomy-label">Setup</span><span class="taxonomy-count">1</span></a></li>
</ul>
</div>
<div class="taxonomy taxonomy-terms-cloud taxo-categories">
<h5 class="taxonomy-title">Categories</h5>
<ul class="taxonomy-terms">
<li><a class="taxonomy-term" href="https://markbeep.github.io/AudioBookRequest/categories/development/" data-taxonomy-term="development"><span class="taxonomy-label">Development</span><span class="taxonomy-count">1</span></a></li>
<li><a class="taxonomy-term" href="https://markbeep.github.io/AudioBookRequest/categories/setup/" data-taxonomy-term="setup"><span class="taxonomy-label">Setup</span><span class="taxonomy-count">6</span></a></li>
</ul>
</div>
</aside>
<main class="col-12 col-md-9 col-xl-8 ps-md-5" role="main">
<nav aria-label="breadcrumb" class="td-breadcrumbs">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="/AudioBookRequest/docs/">Documentation</a></li>
<li class="breadcrumb-item">
<a href="/AudioBookRequest/docs/tutorials/">Tutorials</a></li>
<li class="breadcrumb-item active" aria-current="page">
OpenID Connect</li>
</ol>
</nav>
<div class="td-content">
<h1>OpenID Connect</h1>
<div class="lead">Setting up OIDC login</div>
<header class="article-meta">
</header>
<p>OIDC allows you to use the same login across multiple apps. This guide will show
you how to set up OIDC with Authentik, but the concepts are the same or similar
for other providers.</p>
<h2 id="setup-a-provider-on-authentik">Setup a provider on Authentik<a class="td-heading-self-link" href="#setup-a-provider-on-authentik" aria-label="Heading self-link"></a></h2>
<ol>
<li>
<p>You want to first create an application on Authentik. The settings here
don&rsquo;t play a role for AudioBookRequest though.</p>
</li>
<li>
<p>You then want to create an OAuth2/OpenID Provider:</p>
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-oidc.png" alt="Authentik OIDC"></p>
</li>
<li>
<p>Configure the settings as preferred. The important two values are the
<code>Client ID</code> and <code>Client Secret</code>. Take note of those. You should also set the
redirect URL that the OIDC provider will redirect you to after a succesful
login. This has to be the domain of your ABR instance with <code>/auth/oidc</code>
appended.</p>
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-provider.png" alt="Authentik Provider"></p>
<div class="alert alert-warning" role="alert">
<h4 class="alert-heading">Warning</h4>
Make sure you correctly set
<code>http</code> or <code>https</code> in the redirect URL. This depends on how you access
AudioBookRequest.
</div>
</li>
<li>
<p>Set the scopes that ABR can get access to. You should always allow for the
<code>openid</code> scope. Any other scopes are optional. You&rsquo;ll have to check with
your OIDC provider to see what what scopes are required to get a
name/username and groups. &ldquo;Subject mode&rdquo; is a unique identifier for the
user. This can be used as the username on ABR.</p>
<p><img src="/AudioBookRequest/docs/tutorials/oidc/authentik-scopes.png" alt="Authentik Scopes"></p>
</li>
<li>
<p>Assign your newly created provider to the ABR application.</p>
</li>
</ol>
<h2 id="setup-settings-in-abr">Setup settings in ABR<a class="td-heading-self-link" href="#setup-settings-in-abr" aria-label="Heading self-link"></a></h2>
<ol>
<li>On AudioBookRequest, head to <code>Settings&gt;Security</code> and set the &ldquo;Login Type&rdquo; to
&ldquo;OpenID Connect&rdquo;.</li>
<li>Paste the &ldquo;Client ID&rdquo; and &ldquo;Client Secret&rdquo; into the respective fields.</li>
<li>Your &ldquo;OIDC Configuration Endpoint&rdquo; depends on the OIDC provider you use. For
Authentik, it&rsquo;s usually along the lines of
<a href="https://domain.com/application/o/audiobookrequest/.well-known/openid-configuration">https://domain.com/application/o/audiobookrequest/.well-known/openid-configuration</a>.
You&rsquo;ll have to find that for your own provider. Visiting the url should give
you a JSON-formatted object with different endpoints and details given.</li>
<li>The &ldquo;OIDC Scopes&rdquo; are the ones defined above separated by a space. <code>openid</code>
is always required. Any other scopes like <code>email</code> or <code>group</code> are only
required if you intend to use the email for the username or respectively
extract the group of the user.</li>
<li>&ldquo;OIDC Username Claim&rdquo; <strong>has to be a unique identifier</strong> which is used as the
username for the user. <code>sub</code> is always available, but you might prefere to
use <code>email</code> or <code>username</code> (with the correctly added scope).</li>
<li>Depending on what you used above for the redirect URL, set <code>http</code> or <code>https</code>.
<div class="alert alert-warning" role="alert">
<h4 class="alert-heading">Warning</h4>
<code>http/s</code> has to match-up with
what protocol your redirect-url uses. Providers <em>will</em> reject logins if this
does not match up.
</div>
</li>
<li><em>Optional</em>: The &ldquo;OIDC Logout URL&rdquo; is where you&rsquo;re redirected if you select to
log out in ABR. OIDC Providers allow you to invalidate the session on this
URL. While this value is optional, not adding it might break logging out
slightly because the session can&rsquo;t properly be invalidated.</li>
</ol>
<h2 id="groups">Groups<a class="td-heading-self-link" href="#groups" aria-label="Heading self-link"></a></h2>
<p>&ldquo;OIDC Group Claim&rdquo; is optional, but allows you to handle the role distribution
of users in your OIDC provider instead of in ABR. The exact claim that sends
along the information depends on your OIDC provider. The OIDC provider can
provide a single string or list of strings.</p>
<p>The groups have to be named exactly one of <code>untrusted</code>, <code>trusted</code>, or <code>admin</code>.
The letter case does not matter.</p>
<div class="alert alert-primary" role="alert">
For Authentik, the group claim name is <code>groups</code> and requires the
<code>profile</code> scope. If you assign a user to a group named <code>trusted</code>, that user will
receive the <code>Trusted</code> role once they login to AudioBookRequest.
</div>
<div class="section-index">
</div>
<style>
.feedback--answer {
display: inline-block;
}
.feedback--answer-no {
margin-left: 1em;
}
.feedback--response {
display: none;
margin-top: 1em;
}
.feedback--response__visible {
display: block;
}
</style>
<div class="d-print-none">
<h2 class="feedback--title">Feedback</h2>
<p class="feedback--question">Was this page helpful?</p>
<button class="btn btn-primary mb-4 feedback--answer feedback--answer-yes">Yes</button>
<button class="btn btn-primary mb-4 feedback--answer feedback--answer-no">No</button>
<p class="feedback--response feedback--response-yes">
Glad to hear it! Please <a href="https://github.com/markbeep/AudioBookRequest/issues/new">tell us how we can improve</a>.
</p>
<p class="feedback--response feedback--response-no">
Sorry to hear that. Please <a href="https://github.com/markbeep/AudioBookRequest/issues/new">tell us how we can improve</a>.
</p>
</div>
<script>
const yesButton = document.querySelector('.feedback--answer-yes');
const noButton = document.querySelector('.feedback--answer-no');
const yesResponse = document.querySelector('.feedback--response-yes');
const noResponse = document.querySelector('.feedback--response-no');
const disableButtons = () => {
yesButton.disabled = true;
noButton.disabled = true;
};
const sendFeedback = (value) => {
if (typeof gtag !== 'function') return;
gtag('event', 'page_helpful', {
'event_category': 'Helpful',
'event_label': window.location.pathname,
'value': value
});
};
yesButton.addEventListener('click', () => {
yesResponse.classList.add('feedback--response__visible');
disableButtons();
sendFeedback( 100 );
});
noButton.addEventListener('click', () => {
noResponse.classList.add('feedback--response__visible');
disableButtons();
sendFeedback(0);
});
</script>
<br />
<div class="td-page-meta__lastmod">
Last modified August 22, 2025: <a data-proofer-ignore href="https://github.com/markbeep/AudioBookRequest/commit/9b2cda30c01e8d024cc8e66fdef5cf0d46bc153f">feat: add API endpoint to update indexers (mam_id). Closes #122 (9b2cda3)</a>
</div>
</div>
</main>
</div>
</div>
<footer class="td-footer row d-print-none">
<div class="container-fluid">
<div class="row mx-md-2">
<div class="td-footer__left col-6 col-sm-4 order-sm-1">
<ul class="td-footer__links-list">
<li class="td-footer__links-item" data-bs-toggle="tooltip" title="Discord" aria-label="Discord">
<a target="_blank" rel="noopener" href="https://discord.gg/SsFRXWMg7s" aria-label="Discord">
<i class="fab fa-discord"></i>
</a>
</li>
</ul>
</div><div class="td-footer__right col-6 col-sm-4 order-sm-3">
<ul class="td-footer__links-list">
<li class="td-footer__links-item" data-bs-toggle="tooltip" title="GitHub" aria-label="GitHub">
<a target="_blank" rel="noopener" href="https://github.com/google/docsy" aria-label="GitHub">
<i class="fab fa-github"></i>
</a>
</li>
</ul>
</div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2">
<span class="td-footer__copyright">&copy;
2025&ndash;2025
<span class="td-footer__authors">markbeep | <a href="https://creativecommons.org/licenses/by/4.0">CC BY 4.0</a> |</span></span><span class="td-footer__all_rights_reserved">All Rights Reserved</span>
</div>
</div>
</div>
</footer>
</div>
<script src="/AudioBookRequest/js/main.js"></script>
<script defer src="/AudioBookRequest/js/click-to-copy.js" crossorigin="anonymous"></script>
<script src='/AudioBookRequest/js/tabpane-persist.js'></script>
</body>
</html>