Diego, Thanks for the quick replies… The 192.0.2.1 address is something built in somehow – when I looked it up since it’s a public IP, and it comes back as some sort of test network/special use with the comment:
Addresses starting with "192.0.2.", "198.51.100.", or "203.0.113." are reserved for use in documentation and sample configurations. They should never be used in a live network configuration. No one has permission to use these addresses on the Internet. That address is answering back in the packet capture between the PF server and the end-system on the registration VLAN. Since we’re just testing right now, we have not assigned a public cert to the server, but I’m curious that the initial portal interaction is unsecured – I’m not sure where in the config to even specify the portal address. I did notice that when I clear the browser cache, and visit the portal, I get the pop-up for the self-signed cert… However, I still wonder why I’m not getting the same pop-up or it’s not accepting the previously accepted self-signed cert for that oauth page. Thanks, Bill From: Diego Garcia del Rio <garc...@gmail.com> Sent: Wednesday, April 29, 2020 10:11 AM To: Bill Handler <bhand...@pcsknox.com> Cc: Jonathan Nathanson <jmhnathan...@gmail.com>; packetfence-users@lists.sourceforge.net Subject: Re: [PacketFence-users] Google oauth2 - Behavior/Troubleshooting - http vs https Hi Bill Interesting that of using http it works. I used publicly signed certs for my portal. Self signed will just be chaos for the end users unless you can push your root ca to the the devices beforehand (a managed fleet, which is not my case) Now it's clearer that you used the IP and it worked. I wondering what is replying with 192.0.2.1 address... but in my case, for DNS requests coming from the registration interface, packetfence replies with its own ip... So still curious as what's causing this 192 address to be sent back. On Wed, Apr 29, 2020, 10:37 Bill Handler <bhand...@pcsknox.com<mailto:bhand...@pcsknox.com>> wrote: Diego, Our internal DNS is just set for our data vlan – currently there is no DNS record for the PF server in our internal DNS server. The registration VLAN only lives on the switch directly connected to NIC 2 on the PF server and on my test switches that my testing end-systems are connected to. I have an IP on the registration VLAN (172) interface in PF 172.16.172.1 and on the VLAN interface on one of my test switches 172.16.172.2; this allows me to ensure that, since everything is tagged on the switch to switch and to the PF server, I can ping between them. I have the same setup for the Isolation VLAN (173 – 172.16.173.x). In the install guide/your screenshot, the Portal URL is listed as the FQDN of the PF server. That Portal URL is what is shown on the end-system browser. I’m using the default PF portal setup, and what is listed is the FQDN of the server… However, I’m not sure that a DNS entry in our local DNS server would help in this instance…The PF server handles DNS/DHCP for the Registration VLAN, it only reaches the internal DNS if something is in the passthrough correct? In my case PF is spoofing the FQDN in the portal up until the point that Google responds back with the token it seems; then PF DNS is replying with a 192.0.2.1 IP for the FQDN of the PF server. BTW, in case I mis-spoke, I’m replacing the FQDN with the IP address of the Registration VLAN Interface on the PF server – 172.16.172.1, and then registration goes through, not a different FQDN. Going through the process and copying all the URLs that show in the browser, I noticed that the site is initially http, but when google is called for the account login, it changes to https, and the portal URL is listed as https… When I change the redirect uri in Google/portal URL in PF from https to http it works. Since you have https on your portal, are you using the internal PF self-signed cert, or do you have a public cert installed? Thanks, Bill From: Diego Garcia del Rio <garc...@gmail.com<mailto:garc...@gmail.com>> Sent: Wednesday, April 29, 2020 8:49 AM To: Bill Handler <bhand...@pcsknox.com<mailto:bhand...@pcsknox.com>> Cc: Jonathan Nathanson <jmhnathan...@gmail.com<mailto:jmhnathan...@gmail.com>>; packetfence-users@lists.sourceforge.net<mailto:packetfence-users@lists.sourceforge.net> Subject: Re: [PacketFence-users] Google oauth2 - Behavior/Troubleshooting - DNS Issue? Hi Bill I haven't installed pf10 yet. But I think the key item is the fact that the registration vlan DNS is not resolving to the correct PF address. Do you have any nic or vlan configured with that IP? You mention replacing the fqdn for that of the registration vlan. Is that provisioned on your own DNS server ? Cause in my case I only have a DNS entry for the "management" interface and packetfence uses the same name but spoofs the DNS with with registration vlan IP Maybe you have more than one registration vlan? On Wed, Apr 29, 2020, 09:23 Bill Handler <bhand...@pcsknox.com<mailto:bhand...@pcsknox.com>> wrote: Diego, Ran some packet captures on Monday and every time the end-system was looking for the IP of the packetfence host – DNS lookup – it was returned as a 192.0.2.1. This is some sort of internal IP that PF is using for the portal, as it is the default response no matter what is requested. I checked this via NSLookup on the end-system. Thinking I had messed something up in the initial config/deployment (this is still as test environment), I re-built/deployed with a fresh install. Once everything was built-out, I had the same results. After entering the credentials for Google login, I get the browser window stating that I need to log into the network with a ‘connect now’ button. The address within the browser shows: https://pf428.pcsknox.com/oauth2/callback?code=... pf428.pcsknox.com<http://pf428.pcsknox.com> is the hostname/FQDN of the PacketFence server. In the capture I see the DNS request for this, but as I said it is returned as 192.0.2.1. If I replace the FQDN of the PF server with the Registration VLAN interface IP on the PF server, the authentication goes through and I get the screen showing that the role has been assigned, and am flipped to the correct VLAN. The packet capture shows a DNS query from the end-system for “dl.google.com<http://dl.google.com>”, which is answered with the correct info. About 2 seconds later there is a DNS Query from the end-system for “passwordsleakcheck-pa.googleapis.com<http://passwordsleakcheck-pa.googleapis.com>” which is also answered correctly. This is the last DNS request on this VLAN for the end-system. So for whatever reason, the system is not authenticating the response/token from Google when it is presented from the end-system – I think this is what is happening. It seems the process is breaking down between the end-system and the FP server when Google sends the token. I’m not sure where to look to see where the 192.0.2.1 address is coming from, or how to put an ‘A’ record in to the registration vlan dns to point the FQDN to the interface’s IP, or what is needed here. To me, it seems like a DNS issue on PF. Is this possibly a bug in the code? I do have packet captures from the end-system, the PF server on the registration vlan interface, and on the data vlan interface. Just to go over the setup, in case that is part of the issue… Hypervisor – Hyper-V 2019 Centos7 VM with PF 10 installed using documentation from https://packetfence.org/doc/PacketFence_Installation_Guide.html . 802.1x working fine tied to our AD server; using machine auth and user auth, SMS authentication works without issue. The only issue seems to be with Oauth. The PF server has 2 NICs, NIC 1 is for the data vlan untagged (eth0), NIC 2 is for the other vlans, registration, and isolation (eth1) tagged. PF is handing out DHCP on registration/isolation vlans. Any help is appreciated. Thanks, Bill From: Bill Handler Sent: Friday, April 24, 2020 4:40 PM To: Diego Garcia del Rio <garc...@gmail.com<mailto:garc...@gmail.com>> Cc: Jonathan Nathanson <jmhnathan...@gmail.com<mailto:jmhnathan...@gmail.com>>; packetfence-users@lists.sourceforge.net<mailto:packetfence-users@lists.sourceforge.net> Subject: RE: [PacketFence-users] Google oauth2 - Behavior/Troubleshooting Diego, Thanks for your help and guidance on this… The end-system is getting the reply from Google with the authorization code – the Portal URL in the config that ends in ‘/callback’. However, the hostname of the pf server is not being resolved. If I replace the hostname.domain with the IP address of the registration VLAN interface on the PF server (the end-system’s gateway), the authentication proceeds and the end-system authenticates. Weirdness abounds… I’ll perform a packet capture on Monday when I’m back in the office to see if I can tell what the end-system is requesting for ‘website’ that google returns. Have a good weekend, and thanks again for your assistance. Thanks, Bill From: Diego Garcia del Rio <garc...@gmail.com<mailto:garc...@gmail.com>> Sent: Friday, April 24, 2020 10:29 AM To: Bill Handler <bhand...@pcsknox.com<mailto:bhand...@pcsknox.com>> Cc: Jonathan Nathanson <jmhnathan...@gmail.com<mailto:jmhnathan...@gmail.com>>; packetfence-users@lists.sourceforge.net<mailto:packetfence-users@lists.sourceforge.net> Subject: Re: [PacketFence-users] Google oauth2 - Behavior/Troubleshooting Hi.. those errors are not errors. They are jus the logs of pfdns and its still related to the user trying / reaching google. you should look at the logs (especially packetfence.log) for any other messages around the time. Most of the log messages SHOULD have the mac address of the device trying to connect so you can grep for those (you can also use grep -i to make grep case insensitive, so "grep -i oauth" should find... all variations of oauth.. also try to set the debug level for the portal module to dEBUG or TRACE: like this: conf/log.conf.d/pfqueue.conf Change to following line from this log4perl.rootLogger = INFO, PFQUEUE To this log4perl.rootLogger = TRACE, PFQUEUE Then you can either wait 5 minutes (that is the time it takes for the logging level to be updated) Or restart the service if you do not want to wait. But adapt it to the portal module instead of pfqueue.conf On Fri, Apr 24, 2020 at 11:14 AM Diego Garcia del Rio <garc...@gmail.com<mailto:garc...@gmail.com>> wrote: let me check what I have configured. But i think you do need n API enabled. On Fri, Apr 24, 2020 at 11:12 AM Bill Handler <bhand...@pcsknox.com<mailto:bhand...@pcsknox.com>> wrote: Again, apologies for my ignorance on this… When I created the Oauth credentials in the Google Developer site, I did not enable an API. I’m thinking I missed doing that. Since I’m just trying to authenticate users and not accessing anything within GSuite or anything else along those lines, I’m not sure what API I may need. Ideas? Thanks, Bill From: Bill Handler Sent: Friday, April 24, 2020 8:36 AM To: Diego Garcia del Rio <garc...@gmail.com<mailto:garc...@gmail.com>> Cc: Jonathan Nathanson <jmhnathan...@gmail.com<mailto:jmhnathan...@gmail.com>>; packetfence-users@lists.sourceforge.net<mailto:packetfence-users@lists.sourceforge.net> Subject: RE: [PacketFence-users] Google oauth2 - Behavior/Troubleshooting Diego, Thanks for the pointers. The logs appear to be now located in the /usr/local/pf/logs directory. There is no logs folder in the /usr/local/pf/var directory. I ran the restart command and tried to log in via Google again… Rechecked the logs as I did before (grep OAuth), ran it a second time as ‘grep oauth’ and now got some responses… (this is with the openid defaults) [root@packetfence_v10 logs]# cat *.log | grep OAuth Apr 24 07:33:37 packetfence_v10 packetfence: INFO -e(243390): Adding Forward rules to allow connections to the OAuth2 Providers and passthrough. (pf::iptables::generate_passthrough_rules) [root@packetfence_v10 logs]# cat *.log | grep oauth Apr 24 07:43:35 packetfence_v10 haproxy[244351]: 172.16.172.237:50335<http://172.16.172.237:50335> [24/Apr/2020:07:43:35.454] portal-http-192.0.2.1 172.16.174.1-backend/127.0.0.1<http://127.0.0.1> 0/0/1/210/213 302 928 - - ---- 3/2/0/0/0 0/0 {pfv10.pcsknox.com<http://pfv10.pcsknox.com>} "GET /switchto/default_policy+default_registration_policy+default_oauth_policy HTTP/1.1" Apr 24 07:43:41 packetfence_v10 haproxy[244351]: 172.16.172.237:50627<http://172.16.172.237:50627> [24/Apr/2020:07:43:39.361] portal-http-192.0.2.1 172.16.174.1-backend/127.0.0.1<http://127.0.0.1> 0/0/0/1909/1910 302 1410 - - ---- 6/2/0/0/0 0/0 {pfv10.pcsknox.com<http://pfv10.pcsknox.com>} "POST /oauth2/go HTTP/1.1" Apr 24 07:44:54 packetfence_v10 haproxy[244351]: 172.16.172.237:51592<http://172.16.172.237:51592> [24/Apr/2020:07:44:52.404] portal-http-192.0.2.1 172.16.174.1-backend/127.0.0.1<http://127.0.0.1> 0/0/0/1827/1829 302 1410 - - ---- 4/2/0/0/0 0/0 {pfv10.pcsknox.com<http://pfv10.pcsknox.com>} "POST /oauth2/go HTTP/1.1" Apr 24 07:43:30 packetfence_v10 pfdns: 172.16.172.237 - [24/Apr/2020:07:43:30 -0400] "A IN oauthaccountmanager.googleapis.com<http://oauthaccountmanager.googleapis.com>. udp 52 false 512" NOERROR qr,rd,ra 102 61.289551ms [root@packetfence_v10 logs]# I put the old Google Auth config – yours with the userinfo.email settings and restarted the pf service. Tried to authenticate the end-system again, but still failed… Checked the logs as before, and here are the results (duplicate entries from above removed for clarity): [root@packetfence_v10 logs]# cat *.log | grep OAuth Apr 24 08:17:32 packetfence_v10 packetfence: INFO -e(7334): Adding Forward rules to allow connections to the OAuth2 Providers and passthrough. (pf::iptables::generate_passthrough_rules) [root@packetfence_v10 logs]# cat *.log | grep oauth Apr 24 08:14:58 packetfence_v10 haproxy[244351]: 172.16.172.237:60742<http://172.16.172.237:60742> [24/Apr/2020:08:14:58.422] portal-http-192.0.2.1 172.16.174.1-backend/127.0.0.1<http://127.0.0.1> 0/0/1/439/440 302 1482 - - ---- 4/3/0/0/0 0/0 {pfv10.pcsknox.com<http://pfv10.pcsknox.com>} "POST /oauth2/go HTTP/1.1" Apr 24 08:27:35 packetfence_v10 haproxy[8300]: 172.16.172.237:51328<http://172.16.172.237:51328> [24/Apr/2020:08:27:33.905] portal-http-192.0.2.1 172.16.174.1-backend/127.0.0.1<http://127.0.0.1> 0/0/0/1787/1788 302 1482 - - ---- 3/2/0/0/0 0/0 {pfv10.pcsknox.com<http://pfv10.pcsknox.com>} "POST /oauth2/go HTTP/1.1" Apr 24 08:27:59 packetfence_v10 pfdns: 172.16.172.237 - [24/Apr/2020:08:27:59 -0400] "A IN oauthaccountmanager.googleapis.com<http://oauthaccountmanager.googleapis.com>. udp 52 false 512" NOERROR qr,rd,ra 102 23.614118ms Apr 24 08:27:59 packetfence_v10 pfdns: 172.16.172.237 - [24/Apr/2020:08:27:59 -0400] "A IN oauthaccountmanager.googleapis.com<http://oauthaccountmanager.googleapis.com>. udp 52 false 512" NOERROR qr,rd,ra 102 25.300084ms [root@packetfence_v10 logs]# I’m hopeful that this helps, but again, I’m not sure what I’m looking for… Thanks, Bill From: Diego Garcia del Rio <garc...@gmail.com<mailto:garc...@gmail.com>> Sent: Thursday, April 23, 2020 5:26 PM To: Bill Handler <bhand...@pcsknox.com<mailto:bhand...@pcsknox.com>> Cc: Jonathan Nathanson <jmhnathan...@gmail.com<mailto:jmhnathan...@gmail.com>>; packetfence-users@lists.sourceforge.net<mailto:packetfence-users@lists.sourceforge.net> Subject: Re: [PacketFence-users] Google oauth2 - Behavior/Troubleshooting Hi bill Please look at ALL the log files under /usr/local/pf/var/logs (the httpd logs only cover the requests from the devices). There will be two requests going to google.. one where Packetfence is doing NAT for the devices to be onboarded (this is the traffic from the user's browser) and then another that will go from packetfence itself to google again, using the token returned by the customer's browser to get the actual data from the google account. also, I dont remember if any of the changes to google oauth take effect immediately or you need to restart the PF service. (to restart the PF service use this script: /usr/local/pf/bin/pfcmd service pf restart On Thu, Apr 23, 2020 at 3:37 PM Bill Handler <bhand...@pcsknox.com<mailto:bhand...@pcsknox.com>> wrote: I’m hoping I’ve set up the Google part correctly, if not the authentication wouldn’t go through correct? I just needed to setup OAuth 2.0 Client IDs. I don’t need any API Keys or Service Accounts correct? In the Client ID I listed it as a web application Diego, Thanks for your help… This is my first experience with PacketFence, and I’m feeling my way through it. I’m not entirely sure what all your information means, so please pardon my ignorance. My Google Auth was set to the default openid that you listed. I changed it to the older scope/protected resource urls with no change. I know that the request is going out to google, and that something is coming back by seeing the url in the end-system’s browser. It seems like PF is not authenticating the token. I am still unsure what log file the logging entries you pointed out go to. I was in the logs folder and ran a ‘cat *.log | grep OAuth’ but came back with no results. Jonathan, We’re not using the A3 variant from HiveManger/Extreme IQ, I’m just working with PacketFence straight (Although we are an Extreme Networks partner and the AeroHive gear is part of our offerings now… ). PacketFence is only handing out DHCP on the registration VLAN, our internal DHCP is handing out IPs on our data vlan, Firewall is handing out IPs on guest and phone vlans. But, we’re never getting that far – the end-system is not being given the role and stays as unregistered. httpd.portal.error Log has no entries for today. I did a packet capture from the PF server and did see some traffic going to/from Google IP addresses, but it was TLS or TCP Acks and I could not tell what the payload was… Thanks, Bill From: Diego Garcia del Rio <garc...@gmail.com<mailto:garc...@gmail.com>> Sent: Thursday, April 23, 2020 10:43 AM To: Jonathan Nathanson <jmhnathan...@gmail.com<mailto:jmhnathan...@gmail.com>> Cc: packetfence-users@lists.sourceforge.net<mailto:packetfence-users@lists.sourceforge.net>; Bill Handler <bhand...@pcsknox.com<mailto:bhand...@pcsknox.com>> Subject: Re: [PacketFence-users] Google oauth2 - Behavior/Troubleshooting Hi Jonathan, Bill, The device will get the role indeed after a disconnect / CoA but given Bill mentions that his other auth methods work... I would be surprised that CoA fails for this. Also, he should still be seeing the device having the new role. Below is my config of the google authentication source (old GUI, sorry). <Pic removed> also, i seem to be using the OLD user information scheme / url: (look here: https://github.com/inverse-inc/packetfence/commit/8f38c0e5b51ff5daf83f1720aef8253059fa1a96) i am using this: has 'scope' => (isa => 'Str', is => 'rw', default => 'https://www.googleapis.com/auth/userinfo.email'); has 'protected_resource_url' => (isa => 'Str', is => 'rw', default => 'https://www.googleapis.com/oauth2/v2/userinfo'); instead of the new defaults which are these: has 'scope' => (isa => 'Str', is => 'rw', default => 'openid email profile'); has 'protected_resource_url' => (isa => 'Str', is => 'rw', default => 'https://openidconnect.googleapis.com/v1/userinfo'); basically it looks like this: <Pic removed> So maybe your authorized scope in google is for this old schema and not the new open-id one? Also, keep in mind that accessing the google login portal from mobile devices can be tricky. Google blacklists the "embedded" browsers of most phones so you need to launch chrome manually or contact google to get an exception for your specific APP ID. Also, check your logs for any phrase like this: "OAuth2 Error: Failed to get the token" (look at the code here: https://github.com/inverse-inc/packetfence/blob/541c6c8545195881b136bc55edb7cd531594061d/html/captive-portal/lib/captiveportal/PacketFence/DynamicRouting/Module/Authentication/OAuth.pm ) you have these two logging entries in the code: (you might need to increase the logging level to debug). get_logger->info("OAuth2 successfull for username ".$self->username); $self->source->lookup_from_provider_info($self->username, $info); pf::auth_log::record_completed_oauth($self->source->id, $self->current_mac, $pid, $pf::auth_log::COMPLETED, $self->app->profile->name); $self->update_person_from_fields(); $self->done(); } else { get_logger->info("OAuth2: failed to validate the token, redireting to login page."); get_logger->debug(sub { use Data::Dumper; "OAuth2 failed response : ".Dumper($response) }); pf::auth_log::change_record_status($self->source->id, $self->current_mac, $pf::auth_log::FAILED, $self->app->profile->name); $self->app->flash->{error} = "OAuth2 Error: Failed to validate the token, please retry"; $self->landing(); good luck! Cheers On Thu, Apr 23, 2020 at 3:04 AM Jonathan Nathanson <jmhnathan...@gmail.com<mailto:jmhnathan...@gmail.com>> wrote: I had this very similar problem recently. Does A3 manage DHCP in the reg VLAN? The role should be assigned following a disconnect / COA packet sent to the client device to get them to reconnect, I believe. You should do a packet trace and check. You might also want to check corresponding log entries in httpd.portal.error to see if you can spot the issue there. Jonathan On Thu, 23 Apr 2020 at 01:32, Bill Handler via PacketFence-users <packetfence-users@lists.sourceforge.net<mailto:packetfence-users@lists.sourceforge.net>> wrote: I’m running on v10, using the default whitelist in the Google Auth config. The end system is talking to google, verified with wireshark, and by inputting wrong password. The end system’s role never gets updated, even though I have a catchall rule in place that should move it to a different VLAN. I have not done a packet capture on server’s interface yet. The end system stays as unregistered, so the issue may be authenticating the token between PF and google. I’ve only tested using Chrome and Firefox browsers and only if Chrome is used does the redirect show accounts.blogger.com<http://accounts.blogger.com> in the address field after entering the google account credentials. Both browser windows show the you may need to login to your network with a button; the button sends you back to the AUP. Is there a certain log that I would be able to see PF talking to google, or just checking wireshark packets? Thanks, Bill Sent from my iPad On Apr 22, 2020, at 5:15 PM, Diego Garcia del Rio <garc...@gmail.com<mailto:garc...@gmail.com>> wrote: Just to be sure, do you have all the proper whitelists as well? Its weird that the user is directed to accounts.blogger.com<http://accounts.blogger.com>... Also, you should be able to see your PF server making a request to google to validate the returned token. On which version of PF are you? I've been using google auth successfully all the way up to 9.2 (I haven tested anything newer though). Also, not sure the logic you're using but you might want to check that the google source is assigning a role to the device in question.. On Wed, Apr 22, 2020 at 5:51 PM Bill Handler via PacketFence-users <packetfence-users@lists.sourceforge.net<mailto:packetfence-users@lists.sourceforge.net>> wrote: Running into an issue with Google oauth2 authentication via Captive Portal… * Have it configured and set as an External Authentication Source * Have all the correct settings on Google Developer site What’s happening is that after entering the username/password in the Google display on the captive portal, the user is not put into the correct VLAN/redirected. Authentication via AD/SMS/E-Mail works without issue. If using Chrome Browser, user is redirected to accounts.blogger.com<http://accounts.blogger.com> with a long string afterwards, within Firefox, the url shows as the portal url with “?code=” with a long string – this is the token from Google I believe, based on some of the documentation. The user stays in the registration VLAN and is not moved to the correct role. Not sure where to check to see why the user is not moving. Any help is appreciated. Thanks, Bill _______________________________________________ PacketFence-users mailing list PacketFence-users@lists.sourceforge.net<mailto:PacketFence-users@lists.sourceforge.net> https://lists.sourceforge.net/lists/listinfo/packetfence-users _______________________________________________ PacketFence-users mailing list PacketFence-users@lists.sourceforge.net<mailto:PacketFence-users@lists.sourceforge.net> https://lists.sourceforge.net/lists/listinfo/packetfence-users
_______________________________________________ PacketFence-users mailing list PacketFence-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/packetfence-users