SlideShare a Scribd company logo
Foreman Single Sign-On
Made Easy with Keycloak
Nikhil Kathole
1
About me
Who am I ?
Quality Engineer @ Red Hat
Satellite 6 QE
Follow me:
Twitter: @NikhilKathole1
Github: ntkathole
2
Agenda
What we’re going to cover (quickly)
1. Introduction to Foreman
2. Foreman Authentication Capabilities
3. OpenID Connect
4. Single Sign On with Keycloak
5. Demo - Foreman Integration with Keycloak
6. Q & A
3
Foreman
Managing the Lifecycle of your Systems
4
Foreman Plugins
1. Choose the environment as per specific needs
2. Plugins offer custom features and maximize the flexibility
Extend and modify the Foreman
5
Foreman Plugins
Huge ecosystem of plugins
6
Foreman Authentication Capabilities
Internal/FreeIPA/AD
1. User management is a repeated need across projects
2. Native implementations
a. Internal users
b. LDAP authentication
c. Kerberos based SSO
7
Login Workflows
Internal User login
8
Browser
Login Workflows
FreeIPA User login
9
Browser
Login Workflows
Active Directory User login
10
Browser
Login Workflows
FreeIPA-AD Forest
11
Browser
Trust
12
Delegate your security
Single Sign On
13
1. Redirect all the things
2. Authenticate all the things
3. Multiple applications - login once
What is Keycloak ?
1. Open Source Project
2. Identity and Access Management
3. A java app
4. Wide variety of user management use cases
14
OpenID Connect
1. Making simple things simple and complicated things possible
2. Internet Standard for Single Sign On
a. Need to authenticate the user?
b. Send user to their OpenID provider
c. Get identity token back
3. Uses simple JSON Web Tokens
15
JWT (JSON Web Token)
eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt
HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L
TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M
zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ
SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH
k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl
c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1
cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw
16
JWT (JSON Web Token)
eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt
HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L
TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M
zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ
SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH
k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl
c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1
cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw
17
JWT (JSON Web Token)
eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt
HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L
TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M
zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ
SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH
k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl
c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1
cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw
18
Header
{
"alg": "RS256",
"typ": "JWT",
}
JWT (JSON Web Token)
eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt
HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L
TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M
zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ
SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH
k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl
c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1
cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw
19
Payload Data
{
"jti": "d7f52d2e-2097-4041-9c84-c349d7f5fc75",
"exp": 1579431842,
"iat": 1579431782,
"iss": "https://keycloak.example.com/auth/realms/ssl-realm",
"aud": [
"foreman.example.com-foreman-openidc",
"broker",
"account"
],
"sub": "5097d158-6638-43b8-8c76-daade8673ed6",
"typ": "Bearer",
"name": "test1 test2",
"groups": [DevConfCZ],
"preferred_username": "test",
"given_name": "test1",
"family_name": "test2",
"email": "test@test.com"
}
JWT (JSON Web Token)
eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt
HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L
TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M
zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ
SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH
k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl
c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1
cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw
20
Signature
JWT Payload Data
1. Who you are
2. What you can do (groups, roles..)
3. No registration is needed in Foreman
21
Single Sign On in Foreman
With Keycloak
1. Register Foreman as client to Keycloak
a. Install mod_auth_openidc and keycloak-httpd-client-install
b. keycloak-httpd-client-install --app-name foreman-openidc
--keycloak-server-url "{{ KEYCLOAK_URL }}"
--keycloak-admin-username "{{ KEYCLOAK_USER }}"
--keycloak-realm "{{ KEYCLOAK_REALM }}"
--keycloak-admin-realm master
--keycloak-auth-role root-admin -t openidc -l /users/extlogin
22
Single Sign On in Foreman
With Keycloak
2. Add mappers to client
a. Group Membership Mapper
b. Audience Mapper
3. Configure Foreman settings
23
24
Demo
Single Sign On in Foreman
With Keycloak
25
Single Sign On in Foreman
With Keycloak
● Foreman is responsible for
○ Validate the token
○ Authorize the user based on payload
○ Map roles and permissions
26
Simple and “more” secure
1. Password goes to Identity provider
2. End application doesn’t have your password
3. Token has short expiry
4. Centralized authentication with Keycloak
5. Less work on the back end and reduced risk
27
Resources
● Visit us http://theforeman.org/
● If you do something cool with Foreman, let us know!
● Find us:
− IRC: irc.freenode.net
● #theforeman
● #theforeman-dev
− Reach out to us at
● https://community.theforeman.org/
28
Q & A
Nikhil Kathole
@NikhilKathole1
29
THANK YOU!
Nikhil Kathole
@NikhilKathole1
30

More Related Content

What's hot

API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
Sébastien Saunier
 
Denys Serhiienko "ASGI in depth"
Denys Serhiienko "ASGI in depth"Denys Serhiienko "ASGI in depth"
Denys Serhiienko "ASGI in depth"
Fwdays
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
흥배 최
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
OpenStack Korea Community
 
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry BuzdinModern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Java User Group Latvia
 
2023 COSCUP - Whats new in PostgreSQL 16
2023 COSCUP - Whats new in PostgreSQL 162023 COSCUP - Whats new in PostgreSQL 16
2023 COSCUP - Whats new in PostgreSQL 16
José Lin
 
JSON Web Tokens
JSON Web TokensJSON Web Tokens
JSON Web Tokens
Ivan Rosolen
 
Swagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdfSwagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdf
Knoldus Inc.
 
Provisioning on Libvirt with Foreman
Provisioning on Libvirt with ForemanProvisioning on Libvirt with Foreman
Provisioning on Libvirt with Foreman
Nikhil Kathole
 
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Svetlin Nakov
 
Log management system for Microservices
Log management system for MicroservicesLog management system for Microservices
Log management system for Microservices
Võ Duy Tuấn
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
SeungYong Oh
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
DaeMyung Kang
 
Data Center Networks:Virtual Bridging
Data Center Networks:Virtual BridgingData Center Networks:Virtual Bridging
Data Center Networks:Virtual Bridging
rjain51
 
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
NAVER Engineering
 
Migrating and Running DBs on Amazon RDS for Oracle
Migrating and Running DBs on Amazon RDS for OracleMigrating and Running DBs on Amazon RDS for Oracle
Migrating and Running DBs on Amazon RDS for Oracle
Maris Elsins
 
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
Amazon Web Services Korea
 
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Vietnam Open Infrastructure User Group
 
[WSO2 API Manager Community Call] Mastering JWTs with WSO2 API Manager
[WSO2 API Manager Community Call] Mastering JWTs with WSO2 API Manager[WSO2 API Manager Community Call] Mastering JWTs with WSO2 API Manager
[WSO2 API Manager Community Call] Mastering JWTs with WSO2 API Manager
WSO2
 

What's hot (20)

API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
 
Denys Serhiienko "ASGI in depth"
Denys Serhiienko "ASGI in depth"Denys Serhiienko "ASGI in depth"
Denys Serhiienko "ASGI in depth"
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
 
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry BuzdinModern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
 
2023 COSCUP - Whats new in PostgreSQL 16
2023 COSCUP - Whats new in PostgreSQL 162023 COSCUP - Whats new in PostgreSQL 16
2023 COSCUP - Whats new in PostgreSQL 16
 
JSON Web Tokens
JSON Web TokensJSON Web Tokens
JSON Web Tokens
 
Swagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdfSwagger With REST APIs.pptx.pdf
Swagger With REST APIs.pptx.pdf
 
Provisioning on Libvirt with Foreman
Provisioning on Libvirt with ForemanProvisioning on Libvirt with Foreman
Provisioning on Libvirt with Foreman
 
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
 
Log management system for Microservices
Log management system for MicroservicesLog management system for Microservices
Log management system for Microservices
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
Data Center Networks:Virtual Bridging
Data Center Networks:Virtual BridgingData Center Networks:Virtual Bridging
Data Center Networks:Virtual Bridging
 
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
 
Migrating and Running DBs on Amazon RDS for Oracle
Migrating and Running DBs on Amazon RDS for OracleMigrating and Running DBs on Amazon RDS for Oracle
Migrating and Running DBs on Amazon RDS for Oracle
 
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
 
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
 
[WSO2 API Manager Community Call] Mastering JWTs with WSO2 API Manager
[WSO2 API Manager Community Call] Mastering JWTs with WSO2 API Manager[WSO2 API Manager Community Call] Mastering JWTs with WSO2 API Manager
[WSO2 API Manager Community Call] Mastering JWTs with WSO2 API Manager
 

Similar to Foreman Single Sign-On Made Easy with Keycloak

AtlasCamp 2014: Building a Connect Add-on With Your Own Stack
AtlasCamp 2014: Building a Connect Add-on With Your Own StackAtlasCamp 2014: Building a Connect Add-on With Your Own Stack
AtlasCamp 2014: Building a Connect Add-on With Your Own Stack
Atlassian
 
Application Performance Troubleshooting 1x1 - Von Schweinen, Schlangen und Pa...
Application Performance Troubleshooting 1x1 - Von Schweinen, Schlangen und Pa...Application Performance Troubleshooting 1x1 - Von Schweinen, Schlangen und Pa...
Application Performance Troubleshooting 1x1 - Von Schweinen, Schlangen und Pa...
rschuppe
 
Microservices Security Landscape
Microservices Security LandscapeMicroservices Security Landscape
Microservices Security Landscape
Prabath Siriwardena
 
SearchLove Boston 2017 | Dom Woodman | How to Get Insight From Your Logs
SearchLove Boston 2017 | Dom Woodman | How to Get Insight From Your LogsSearchLove Boston 2017 | Dom Woodman | How to Get Insight From Your Logs
SearchLove Boston 2017 | Dom Woodman | How to Get Insight From Your Logs
Distilled
 
Country domination - Causing chaos and wrecking havoc
Country domination - Causing chaos and wrecking havocCountry domination - Causing chaos and wrecking havoc
Country domination - Causing chaos and wrecking havoc
Tiago Henriques
 
Taming botnets
Taming botnetsTaming botnets
Taming botnets
f00d
 
Life Cycle And Detection Of Bot Infections Through Network Traffic Analysis
Life Cycle And Detection Of Bot Infections Through Network Traffic AnalysisLife Cycle And Detection Of Bot Infections Through Network Traffic Analysis
Life Cycle And Detection Of Bot Infections Through Network Traffic AnalysisPositive Hack Days
 
Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023
Chris Grundemann
 
International SEO: Optimizing Your Site for a Global Marketplace
International SEO: Optimizing Your Site for a Global MarketplaceInternational SEO: Optimizing Your Site for a Global Marketplace
International SEO: Optimizing Your Site for a Global Marketplace
Conductor
 
Malware Analysis For The Enterprise
Malware Analysis For The EnterpriseMalware Analysis For The Enterprise
Malware Analysis For The Enterprise
Jason Ross
 
Defcon 22-david-wyde-client-side-http-cookie-security
Defcon 22-david-wyde-client-side-http-cookie-securityDefcon 22-david-wyde-client-side-http-cookie-security
Defcon 22-david-wyde-client-side-http-cookie-securityPriyanka Aash
 
Manual de autodefensa digital (INGLÉS)
Manual de autodefensa digital (INGLÉS)Manual de autodefensa digital (INGLÉS)
Manual de autodefensa digital (INGLÉS)
Stéphane M. Grueso
 
Finding Evil In DNS Traffic
Finding  Evil In DNS TrafficFinding  Evil In DNS Traffic
Finding Evil In DNS Traffic
real_slacker007
 
03 integrate webapisignalr
03 integrate webapisignalr03 integrate webapisignalr
03 integrate webapisignalr
Erhwen Kuo
 
2013.devcon3 liferay and google authenticator integration rafik_harabi
2013.devcon3 liferay and google authenticator integration rafik_harabi2013.devcon3 liferay and google authenticator integration rafik_harabi
2013.devcon3 liferay and google authenticator integration rafik_harabi
Rafik HARABI
 
2013 lecture-01-introduction
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introduction
Pharo
 
Json web token api authorization
Json web token api authorizationJson web token api authorization
Json web token api authorization
Giulio De Donato
 
Start Up Austin 2017: Manual vs Automation - When to Start Automating your Pr...
Start Up Austin 2017: Manual vs Automation - When to Start Automating your Pr...Start Up Austin 2017: Manual vs Automation - When to Start Automating your Pr...
Start Up Austin 2017: Manual vs Automation - When to Start Automating your Pr...
Amazon Web Services
 
Common Browser Hijacking Methods
Common Browser Hijacking MethodsCommon Browser Hijacking Methods
Common Browser Hijacking Methods
David Barroso
 
SplunkLive! Munich 2018: Getting Started with Splunk Enterprise
SplunkLive! Munich 2018: Getting Started with Splunk EnterpriseSplunkLive! Munich 2018: Getting Started with Splunk Enterprise
SplunkLive! Munich 2018: Getting Started with Splunk Enterprise
Splunk
 

Similar to Foreman Single Sign-On Made Easy with Keycloak (20)

AtlasCamp 2014: Building a Connect Add-on With Your Own Stack
AtlasCamp 2014: Building a Connect Add-on With Your Own StackAtlasCamp 2014: Building a Connect Add-on With Your Own Stack
AtlasCamp 2014: Building a Connect Add-on With Your Own Stack
 
Application Performance Troubleshooting 1x1 - Von Schweinen, Schlangen und Pa...
Application Performance Troubleshooting 1x1 - Von Schweinen, Schlangen und Pa...Application Performance Troubleshooting 1x1 - Von Schweinen, Schlangen und Pa...
Application Performance Troubleshooting 1x1 - Von Schweinen, Schlangen und Pa...
 
Microservices Security Landscape
Microservices Security LandscapeMicroservices Security Landscape
Microservices Security Landscape
 
SearchLove Boston 2017 | Dom Woodman | How to Get Insight From Your Logs
SearchLove Boston 2017 | Dom Woodman | How to Get Insight From Your LogsSearchLove Boston 2017 | Dom Woodman | How to Get Insight From Your Logs
SearchLove Boston 2017 | Dom Woodman | How to Get Insight From Your Logs
 
Country domination - Causing chaos and wrecking havoc
Country domination - Causing chaos and wrecking havocCountry domination - Causing chaos and wrecking havoc
Country domination - Causing chaos and wrecking havoc
 
Taming botnets
Taming botnetsTaming botnets
Taming botnets
 
Life Cycle And Detection Of Bot Infections Through Network Traffic Analysis
Life Cycle And Detection Of Bot Infections Through Network Traffic AnalysisLife Cycle And Detection Of Bot Infections Through Network Traffic Analysis
Life Cycle And Detection Of Bot Infections Through Network Traffic Analysis
 
Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023
 
International SEO: Optimizing Your Site for a Global Marketplace
International SEO: Optimizing Your Site for a Global MarketplaceInternational SEO: Optimizing Your Site for a Global Marketplace
International SEO: Optimizing Your Site for a Global Marketplace
 
Malware Analysis For The Enterprise
Malware Analysis For The EnterpriseMalware Analysis For The Enterprise
Malware Analysis For The Enterprise
 
Defcon 22-david-wyde-client-side-http-cookie-security
Defcon 22-david-wyde-client-side-http-cookie-securityDefcon 22-david-wyde-client-side-http-cookie-security
Defcon 22-david-wyde-client-side-http-cookie-security
 
Manual de autodefensa digital (INGLÉS)
Manual de autodefensa digital (INGLÉS)Manual de autodefensa digital (INGLÉS)
Manual de autodefensa digital (INGLÉS)
 
Finding Evil In DNS Traffic
Finding  Evil In DNS TrafficFinding  Evil In DNS Traffic
Finding Evil In DNS Traffic
 
03 integrate webapisignalr
03 integrate webapisignalr03 integrate webapisignalr
03 integrate webapisignalr
 
2013.devcon3 liferay and google authenticator integration rafik_harabi
2013.devcon3 liferay and google authenticator integration rafik_harabi2013.devcon3 liferay and google authenticator integration rafik_harabi
2013.devcon3 liferay and google authenticator integration rafik_harabi
 
2013 lecture-01-introduction
2013 lecture-01-introduction2013 lecture-01-introduction
2013 lecture-01-introduction
 
Json web token api authorization
Json web token api authorizationJson web token api authorization
Json web token api authorization
 
Start Up Austin 2017: Manual vs Automation - When to Start Automating your Pr...
Start Up Austin 2017: Manual vs Automation - When to Start Automating your Pr...Start Up Austin 2017: Manual vs Automation - When to Start Automating your Pr...
Start Up Austin 2017: Manual vs Automation - When to Start Automating your Pr...
 
Common Browser Hijacking Methods
Common Browser Hijacking MethodsCommon Browser Hijacking Methods
Common Browser Hijacking Methods
 
SplunkLive! Munich 2018: Getting Started with Splunk Enterprise
SplunkLive! Munich 2018: Getting Started with Splunk EnterpriseSplunkLive! Munich 2018: Getting Started with Splunk Enterprise
SplunkLive! Munich 2018: Getting Started with Splunk Enterprise
 

Recently uploaded

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 

Recently uploaded (20)

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 

Foreman Single Sign-On Made Easy with Keycloak

  • 1. Foreman Single Sign-On Made Easy with Keycloak Nikhil Kathole 1
  • 2. About me Who am I ? Quality Engineer @ Red Hat Satellite 6 QE Follow me: Twitter: @NikhilKathole1 Github: ntkathole 2
  • 3. Agenda What we’re going to cover (quickly) 1. Introduction to Foreman 2. Foreman Authentication Capabilities 3. OpenID Connect 4. Single Sign On with Keycloak 5. Demo - Foreman Integration with Keycloak 6. Q & A 3
  • 4. Foreman Managing the Lifecycle of your Systems 4
  • 5. Foreman Plugins 1. Choose the environment as per specific needs 2. Plugins offer custom features and maximize the flexibility Extend and modify the Foreman 5
  • 7. Foreman Authentication Capabilities Internal/FreeIPA/AD 1. User management is a repeated need across projects 2. Native implementations a. Internal users b. LDAP authentication c. Kerberos based SSO 7
  • 10. Login Workflows Active Directory User login 10 Browser
  • 13. Single Sign On 13 1. Redirect all the things 2. Authenticate all the things 3. Multiple applications - login once
  • 14. What is Keycloak ? 1. Open Source Project 2. Identity and Access Management 3. A java app 4. Wide variety of user management use cases 14
  • 15. OpenID Connect 1. Making simple things simple and complicated things possible 2. Internet Standard for Single Sign On a. Need to authenticate the user? b. Send user to their OpenID provider c. Get identity token back 3. Uses simple JSON Web Tokens 15
  • 16. JWT (JSON Web Token) eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1 cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw 16
  • 17. JWT (JSON Web Token) eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1 cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw 17
  • 18. JWT (JSON Web Token) eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1 cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw 18 Header { "alg": "RS256", "typ": "JWT", }
  • 19. JWT (JSON Web Token) eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1 cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw 19 Payload Data { "jti": "d7f52d2e-2097-4041-9c84-c349d7f5fc75", "exp": 1579431842, "iat": 1579431782, "iss": "https://keycloak.example.com/auth/realms/ssl-realm", "aud": [ "foreman.example.com-foreman-openidc", "broker", "account" ], "sub": "5097d158-6638-43b8-8c76-daade8673ed6", "typ": "Bearer", "name": "test1 test2", "groups": [DevConfCZ], "preferred_username": "test", "given_name": "test1", "family_name": "test2", "email": "test@test.com" }
  • 20. JWT (JSON Web Token) eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrNkp3Ymt HOTNsQThaM01yTFkwIn0.eyJqdGkiOiJkN2Y1MmQyZS0yMDk3L TQwNDEtOWM4NC1jMzQ5ZDdmNWZjNzUiLCJleHAiOjE1Nzk0M zE4NDIsIm5iZiI6MCwiaWF0IjoxNTc5NDMxNzgyLZF91c2VybmFtZ SI6InRlc3QiLCJnaXZlbl9uYW1lIjoidGVzdDEiLCJmYZ0kcmoLs9JH k43xkz_byJtenKpqwrNNDTF3UHsxn4I8doBW1pbHlfbmFtZSI6InRl c3QyIiwiZW1haWwiOiJ0ZXN0QHRlc3QuY29tIn0.NZ_TDotrL4Nyi1 cEGlDs5KDBlml8urlKBvk5R9hXkLJXzgseqpMKtsGQPCOC7jzmjw 20 Signature
  • 21. JWT Payload Data 1. Who you are 2. What you can do (groups, roles..) 3. No registration is needed in Foreman 21
  • 22. Single Sign On in Foreman With Keycloak 1. Register Foreman as client to Keycloak a. Install mod_auth_openidc and keycloak-httpd-client-install b. keycloak-httpd-client-install --app-name foreman-openidc --keycloak-server-url "{{ KEYCLOAK_URL }}" --keycloak-admin-username "{{ KEYCLOAK_USER }}" --keycloak-realm "{{ KEYCLOAK_REALM }}" --keycloak-admin-realm master --keycloak-auth-role root-admin -t openidc -l /users/extlogin 22
  • 23. Single Sign On in Foreman With Keycloak 2. Add mappers to client a. Group Membership Mapper b. Audience Mapper 3. Configure Foreman settings 23
  • 25. Single Sign On in Foreman With Keycloak 25
  • 26. Single Sign On in Foreman With Keycloak ● Foreman is responsible for ○ Validate the token ○ Authorize the user based on payload ○ Map roles and permissions 26
  • 27. Simple and “more” secure 1. Password goes to Identity provider 2. End application doesn’t have your password 3. Token has short expiry 4. Centralized authentication with Keycloak 5. Less work on the back end and reduced risk 27
  • 28. Resources ● Visit us http://theforeman.org/ ● If you do something cool with Foreman, let us know! ● Find us: − IRC: irc.freenode.net ● #theforeman ● #theforeman-dev − Reach out to us at ● https://community.theforeman.org/ 28
  • 29. Q & A Nikhil Kathole @NikhilKathole1 29