From 2d10c9a1940c10edea34f3560453fc326b7a4ec4 Mon Sep 17 00:00:00 2001 From: Noah Buchmann <87933741+1nbuc@users.noreply.github.com> Date: Mon, 29 May 2023 19:31:46 +0200 Subject: [PATCH] Update docs/adfs/README.md and move to wiki (#840) --- docs/adfs/NameIDFormatError.jpg | Bin 60911 -> 0 bytes docs/adfs/README.md | 128 ------------------------- docs/adfs/retrieve_adfs_certificate.sh | 40 -------- 3 files changed, 168 deletions(-) delete mode 100644 docs/adfs/NameIDFormatError.jpg delete mode 100644 docs/adfs/README.md delete mode 100755 docs/adfs/retrieve_adfs_certificate.sh diff --git a/docs/adfs/NameIDFormatError.jpg b/docs/adfs/NameIDFormatError.jpg deleted file mode 100644 index 2b863f6a09d6f2e27f5a74426b7afa06ef3da37c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60911 zcmeFY1yr2blPKP}yK8WV;O_43!QI{6-MtC!?k)+z-CcqP2_(S-goM{5GxM9-o!S5H zp8cQq-Z`)O>$-L8R@JTR(qBKVKJ5TdWhG@K0bpQY03*-`@U#IC13-X-KR+OV1U*o& zP*9MNQ1CD?(6ET`h=>UA2na~X=%`4@Xvhc%sMx4z7?@aCScoV%xY(Gu=$KfT&qlx? zKsu06a8OWim`DgnnEz#X>Ia~~f=huJs0fYcB064_6yMF*A6gUJl z7z`{Zl>n6R3;sw20|%7=8s=#ofCvFnMTI~G0KmS#$aS0+*t~UQ6#hf-?+G-X?R>vC z?)l~SFO;tQ@pAkHiIZg{uOL{_*rT-5&8}p2OEw+JQx*FDUfoMIBjU1=)_w18<>Onv z+x+Q(1g*@Ca2XcT*GMH~t8qSN(qvhwqkv^Qrhhb{o&kN8Wm#HAyz!~v?{oQsOEb~; z2mKEOc+aXlJ3$`_Mjsk{SQk-PE<5sEmkCZR6Bq$A1)K~qUK8==nO0%1qw8?0D17@(1|%0Ddzhwe%7IeCu2{R)4BRy)Gr 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 adfs.acme_tools.com.crt - -# Create Relying Party - -Copy the `acme_tools_com.xml` to your AD FS server. Use the AD FS management relying party wizard to import this XML, creating a relying party. Create claim rules to pass authentication information to your application. - -This example assumes you will pass in the UPN. - -# Create a Passport framework - -Create a separate file for passport configuration (assumed to be config/passport.js). - -```javascript -var fs = require("fs"), - passport = require("passport"), - SamlStrategy = require("passport-saml").Strategy; -passport.serializeUser(function (user, done) { - done(null, user); -}); -passport.deserializeUser(function (user, done) { - done(null, user); -}); - -passport.use( - new SamlStrategy( - { - entryPoint: "https://adfs.acme_tools.com/adfs/ls/", - issuer: "acme_tools_com", - callbackUrl: "https://acme_tools.com/adfs/postResponse", - privateKey: fs.readFileSync("/path/to/acme_tools_com.key", "utf-8"), - cert: fs.readFileSync("/path/to/adfs.acme_tools.com.crt", "utf-8"), - // other authn contexts are available e.g. windows single sign-on - authnContext: [ - "http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password", - ], - identifierFormat: null, - // this is configured under the Advanced tab in AD FS relying party - signatureAlgorithm: "sha256", - racComparison: "exact", // default to exact RequestedAuthnContext Comparison Type - // From the metadata document - audience: "https://adfs.acme_tools.com/FederationMetadata/2007-06/FederationMetadata.xml", - }, - function (profile, done) { - return done(null, { - upn: profile["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"], - // e.g. if you added a Group claim - group: profile["http://schemas.xmlsoap.org/claims/Group"], - }); - } - ) -); - -module.exports = passport; -``` - -# Express Application - -```javascript - var passport = require('passport'); - var express = require('express'); - ... etc. - - var app = express(); - require('./config/passport.js'); - - ... add the usual express pro-forma - - app.use(passport.initialize()); - app.use(passport.session()); - - app.get('/login', - passport.authenticate('saml', { failureRedirect: '/', failureFlash: true }), - function(req, res) { - res.redirect('https://acme_tools.com'); - } - ); - app.post('/adfs/postResponse', - passport.authenticate('saml', { failureRedirect: '/', failureFlash: true }), - function(req, res) { - res.redirect('https://acme_tools.com'); - } - ); - app.get('/secure', validUser, routes.secure); - - function validUser(req, res, next) { - if (!req.user) { - res.redirect('https://acme_tools.com/login'); - } - next(); - } - - var server = http.createServer(app); -``` - -# Troubleshooting - -## ADFS 2016 - -If you are setting up an ADFS 2016 server, you might run into the following issue with the previous settings: - -``` -An error occurred during an attempt to read the federation metadata. Verify that the specified URL or host name is a valid federation metadata endpoint. - -Verify your proxy server setting. For more information about how to verify you proxy sever setting, see the AD FS Troubleshooting Guide http://go.microsoft.com/fwlink/?LinkId=182180). -Error message: EntityDescriptor 'acme_tools_com'. ID0014: The value 'NamelDFormat' must be an absolute URI. -``` - -![NamelDFormat Error Popup](./NameIDFormatError.jpg) - -If you remove the `identifierFormat`, it works as expected. diff --git a/docs/adfs/retrieve_adfs_certificate.sh b/docs/adfs/retrieve_adfs_certificate.sh deleted file mode 100755 index d1a6e40f..00000000 --- a/docs/adfs/retrieve_adfs_certificate.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -# Author: Tim Brody -# Date: 2015-02-11 -# -# Retrieve the signing certificate from an ADFS instance in PEM format. - -ADFS_SERVER=$1 - -if [ "$#" -ne "1" ]; then - echo "Usage: $0 " - exit 1 -fi - -URL=$ADFS_SERVER/FederationMetadata/2007-06/FederationMetadata.xml -TEMPFILE=$(mktemp) - -if [[ $(command -v wget) ]]; then - wget --no-check-certificate -q -O $TEMPFILE $URL -elif [[ $(command -v curl) ]]; then - curl -sk $URL -o $TEMPFILE - else - echo "Neither curl or wget was found" - exit 127 -fi - -if [ $? -ne 0 ]; then - echo "Error requesting $URL" - exit 1 -fi - -echo "-----BEGIN CERTIFICATE-----" -(xmllint --shell $TEMPFILE | grep -v '^/ >' | grep -v '^ ----' | fold -w 64) << EndOfScript -setns a=urn:oasis:names:tc:SAML:2.0:metadata -setns b=http://www.w3.org/2000/09/xmldsig# -cat /a:EntityDescriptor/b:Signature/b:KeyInfo/b:X509Data/b:X509Certificate/text() -EndOfScript -echo "-----END CERTIFICATE-----" - -unlink $TEMPFILE