Maxmind offers downloadable database for free and paid version. Please read the terms and conditions before using free version.
This database is used offline without internet based outbound calls.
Goal of this solution
NetIQ Access Manager can support custom Geo location providers in order to determine the risk score. Risk Based Authentication with NAM 4.1 will consume this custom provider implementation to read geolocation of user from where user is accessing the system.
This solution will demonstrate how to use Maxmind Geolocation provider with Risk Based Authentication.
Download zip file with this cool solution, it contains maxmind api jar and custom Geo provider for NAM
Copy the jar file to NAM IDP system at location /opt/novell/nam/idp/webapps/nidp/WEB-IN/lib
Copy the com folder to NAM IDP system at location /opt/novell/nam/idp/webapps/nidp/WEB-INF/classes
Restart NAM IDP “/etc/init.d/novell-idp restart”
Go to Admin Console --> Risk Configuration --> Geolocation
Enable Location Profiling
Select Custom Provider as the Geolocation Provider
Enter name for Provider name
Enter com.netiq.custom.risk.core.geoloc.providers.MaxMindLocalDB as Java Class Path
Under Provider Properties Add citydbfile as Property Name and downloaded Maxmind geolocation db file path as value. For example /opt/novell/GeoLiteCity.db
Click ok and finish configuration
Testing
Create Geolocation rule and add that to Rule Group
Access Troubleshooting Tool for Risk Based Authentication
Updated maxmind provider java source MaxMindLocalDB.zip Download Maxmind java jar files and copy maxmind-db-1.2.2.jar and geoip2-2.12.0.jar to NIDP lib folder. Compile provider java source file with NIDP lib jar files in classpath and make jar and copy to NIDP lib folder and restart. Download Maxmind GeoLite2 city db and follow the same configuration in this cool solution.
I found an interesting anomaly when using this with FIngerprinting. This was with 4.3.3, and what happened was when the Geolocation was done before the Fingerprinting, the User DN was lost, so Fingerprinting did not work. Reversed the order and everything was OK. That was about as far as I took it.
In the explanation given the used database is the City -one .. does the configured propertyname change depending on the database used ?to like 'countrydbfile' if you were to use the Country - one , or is it all available under the same property ?