{"id":2326,"date":"2025-06-26T16:18:18","date_gmt":"2025-06-26T14:18:18","guid":{"rendered":"https:\/\/yellotab.se\/x056\/?p=2326"},"modified":"2025-06-27T09:25:50","modified_gmt":"2025-06-27T07:25:50","slug":"proxy-testmiljo","status":"publish","type":"post","link":"https:\/\/yellotab.se\/x056\/2025\/06\/26\/proxy-testmiljo\/","title":{"rendered":"Proxy testmilj\u00f6"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\ud83d\udd01 Rekommenderad v\u00e4g f\u00f6r testmilj\u00f6<\/h2>\n\n\n\n<p><strong>K\u00f6r en minimal proxy\/server som:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tar emot <code class=\"\" data-line=\"\">\/auth<\/code> p\u00e5 <code class=\"\" data-line=\"\">auth.jidoka.se<\/code>.<\/li>\n\n\n\n<li>L\u00e4ser ditt PFX-certifikat (f\u00f6r mTLS).<\/li>\n\n\n\n<li>Pratar med Freja:s OIDC-endpoints.<\/li>\n\n\n\n<li>Returnerar ett svar som OIDC-klienten f\u00f6rst\u00e5r.<\/li>\n<\/ul>\n\n\n\n<p>Jag kan hj\u00e4lpa dig s\u00e4tta upp en s\u00e5dan i Node.js, Go eller nginx beroende p\u00e5 dina preferenser.<\/p>\n\n\n\n<p>Vill du att jag genererar ett exempel med Node.js + <code class=\"\" data-line=\"\">express<\/code> + <code class=\"\" data-line=\"\">http-proxy-middleware<\/code> som g\u00f6r detta, inkl. st\u00f6d f\u00f6r Freja:s test-certifikat (PFX)?<\/p>\n\n\n\n<p>Bra fr\u00e5ga! H\u00e4r \u00e4r en tydlig j\u00e4mf\u00f6relse mellan de tre f\u00f6rslagen \u2013 och varf\u00f6r jag f\u00f6resl\u00e5r <strong>Node.js<\/strong> i just ditt fall:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd01 Vad du beh\u00f6ver:<\/h2>\n\n\n\n<p>Du vill ha en <strong>tunn server<\/strong> p\u00e5 <code class=\"\" data-line=\"\">auth.jidoka.se<\/code> som:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Tar emot OIDC-f\u00f6rfr\u00e5gningar (t.ex. <code class=\"\" data-line=\"\">\/auth<\/code>, <code class=\"\" data-line=\"\">\/token<\/code>, <code class=\"\" data-line=\"\">\/callback<\/code>).<\/li>\n\n\n\n<li>Anv\u00e4nder ditt <strong>Freja PFX-certifikat<\/strong> f\u00f6r att kommunicera med Freja testmilj\u00f6 (via mutual TLS).<\/li>\n\n\n\n<li>Vidarebefordrar svaren till OIDC-klienten (exempelvis WordPress).<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2699\ufe0f Skillnader mellan Node.js, Go och Nginx<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"table has-fixed-layout\"><thead><tr><th>Verktyg<\/th><th>Typ<\/th><th>F\u00f6rdelar<\/th><th>Nackdelar<\/th><\/tr><\/thead><tbody><tr><td><strong>Node.js<\/strong><\/td><td>Programmerbart ramverk (JS)<\/td><td>\u2705 Enkelt att skriva logik<br>\u2705 Har bibliotek f\u00f6r OIDC + mTLS<br>\u2705 Du kan logga, testa, debugga<\/td><td>\ud83d\udd27 Kr\u00e4ver Node.js installerat<\/td><\/tr><tr><td><strong>Go (Golang)<\/strong><\/td><td>Programmerbart ramverk (Go)<\/td><td>\u2705 V\u00e4ldigt snabbt och s\u00e4kert<br>\u2705 Bra f\u00f6r produktion<\/td><td>\ud83d\udd27 Kr\u00e4ver Go-kod och kompilering<br>\u23f1 Tar l\u00e4ngre tid att s\u00e4tta upp<\/td><\/tr><tr><td><strong>Nginx<\/strong><\/td><td>Webbserver + reverse proxy<\/td><td>\u2705 L\u00e5g CPU-anv\u00e4ndning<br>\u2705 Enkelt att forwarda requests<\/td><td>\u274c Ingen inbyggd mTLS-klient<br>\u274c Kan inte hantera OIDC-fl\u00f6det sj\u00e4lv<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udde0 Slutsats: Node.js passar b\u00e4st nu<\/h2>\n\n\n\n<p>Eftersom:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Du har PFX-certifikatet fr\u00e5n Freja.<\/li>\n\n\n\n<li>Du beh\u00f6ver <strong>mTLS + OIDC + enkel routing<\/strong>.<\/li>\n\n\n\n<li>Du troligen vill ha <strong>n\u00e5got du kan l\u00e4sa och anpassa sj\u00e4lv<\/strong>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2b07\ufe0f Vill du att jag skapar en f\u00e4rdig Node.js-l\u00f6sning som:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>K\u00f6r som en liten server p\u00e5 <code class=\"\" data-line=\"\">auth.jidoka.se<\/code>.<\/li>\n\n\n\n<li>Anv\u00e4nder ditt Freja-certifikat (<code class=\"\" data-line=\"\">.pfx<\/code>).<\/li>\n\n\n\n<li>Tar emot <code class=\"\" data-line=\"\">\/auth<\/code> och k\u00f6r hela OIDC-fl\u00f6det?<\/li>\n<\/ul>\n\n\n\n<p>S\u00e4g bara till \u2013 jag fixar ett fungerande exempel med installationsinstruktioner.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Node.js &#8221;OIDC-proxy&#8221;<\/h2>\n\n\n\n<p>Freja OIDC proxy<br>\/\/ Enkel OIDC-proxy till Freja via mTLS med Node.js<\/p>\n\n\n\n<p>H\u00e4r \u00e4r ett fungerande exempel p\u00e5 en OIDC-proxy med Node.js som vidarebefordrar <code class=\"\" data-line=\"\">\/auth<\/code> till Frejas testmilj\u00f6 \u00f6ver mTLS.<\/p>\n\n\n\n<p><strong>F\u00f6ruts\u00e4ttningar:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Du har filen <code class=\"\" data-line=\"\">freja.pfx<\/code> (certifikat fr\u00e5n Freja)<\/li>\n\n\n\n<li>Du har ett lokalt certifikat (<code class=\"\" data-line=\"\">localhost.crt<\/code> och <code class=\"\" data-line=\"\">localhost.key<\/code>) f\u00f6r att k\u00f6ra HTTPS<\/li>\n\n\n\n<li>Installera n\u00f6dv\u00e4ndiga moduler: <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&lt;code&gt;install express http-proxy-middleware<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">N\u00e4sta steg<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>L\u00e4gg filerna i samma mapp som scriptet.<\/li>\n\n\n\n<li>Starta med: <\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&lt;code&gt;sudo node app.js<\/code><\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Testa i webbl\u00e4saren eller med curl: <\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&lt;code&gt;curl -vk https:\/\/localhost\/auth\/oidc\/.well-known\/openid-configuration<\/code><\/code><\/pre>\n\n\n\n<p>Vill du k\u00f6ra detta bakom Nginx Proxy Manager p\u00e5 <code class=\"\" data-line=\"\">auth.jidoka.se\/auth<\/code>, s\u00e5 kan vi justera det efter\u00e5t. Vill du det?<\/p>\n\n\n\n<p>Jidoka autorization url<br><a href=\"https:\/\/oidc.prod.frejaeid.com\/oidc\/authorize?&amp;response_type=code&amp;scope=openid%20email%20profile&amp;client_id=oidc-jidoka&amp;state=52051f72df5d9befa6f1e3b433b2183d&amp;redirect_uri=https%3A%2F%2Fwww.jidoka.se%2Fopenid-connect-authorize\">https:\/\/oidc.prod.frejaeid.com\/oidc\/authorize?&amp;response_type=code&amp;scope=openid%20email%20profile&amp;client_id=oidc-jidoka&amp;state=52051f72df5d9befa6f1e3b433b2183d&amp;redirect_uri=https%3A%2F%2Fwww.jidoka.se%2Fopenid-connect-authorize<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd01 Rekommenderad v\u00e4g f\u00f6r testmilj\u00f6 K\u00f6r en minimal proxy\/server som: Jag kan hj\u00e4lpa dig s\u00e4tta upp en s\u00e5dan i Node.js, Go eller nginx beroende p\u00e5 dina preferenser. Vill du att jag genererar ett exempel med Node.js + express + http-proxy-middleware som g\u00f6r detta, inkl. st\u00f6d f\u00f6r Freja:s test-certifikat (PFX)? Bra fr\u00e5ga! H\u00e4r \u00e4r en tydlig [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2326","post","type-post","status-publish","format-standard","hentry","category-news"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/posts\/2326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/comments?post=2326"}],"version-history":[{"count":3,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/posts\/2326\/revisions"}],"predecessor-version":[{"id":2369,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/posts\/2326\/revisions\/2369"}],"wp:attachment":[{"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/media?parent=2326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/categories?post=2326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/tags?post=2326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}