Skip to content

Commit 12cd478

Browse files
committed
removed freeipa totp
1 parent 07336a7 commit 12cd478

3 files changed

Lines changed: 10 additions & 60 deletions

File tree

selfservice/blueprints/otp.py

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
"""
44

55
import logging
6-
import pyotp
76

7+
import pyotp
88
from flask import Blueprint, render_template, request, redirect, flash
99
from flask import session as flask_session
1010

11-
11+
from selfservice import version, auth, OIDC_PROVIDER
12+
from selfservice.utilities.app_passwd import delete_app_passwd
1213
from selfservice.utilities.keycloak import (
1314
OTPConfigError,
1415
OTPInvalidCode,
@@ -18,9 +19,7 @@
1819
register_kc_otp,
1920
delete_kc_otp,
2021
)
21-
from selfservice.utilities.ldap import create_ipa_otp, has_ipa_otp, delete_ipa_otp
22-
from selfservice.utilities.app_passwd import set_app_passwd, delete_app_passwd
23-
from selfservice import version, auth, OIDC_PROVIDER
22+
from selfservice.utilities.ldap import delete_ipa_otp
2423

2524
otp_bp = Blueprint("otp", __name__)
2625

@@ -31,29 +30,17 @@
3130
@auth.oidc_auth(OIDC_PROVIDER)
3231
def enable():
3332
"""
34-
Creates a Keycloak OTP secret and then displays that to the user. Once
35-
the user has verified their token, it is then replicated in FreeIPA.
33+
Creates a Keycloak OTP secret and then displays that to the user.
3634
"""
3735
username = flask_session["userinfo"].get("preferred_username")
3836
secret = request.args.get("secret", default="", type=str)
3937
otp_code = request.form.get("otp-code", default="")
4038

4139
if request.method == "GET":
4240
kc_registered = get_kc_otp_is_registered(username)
43-
ipa_registered = has_ipa_otp(username)
44-
45-
# If its registered in one place but not the other
46-
if kc_registered != ipa_registered:
47-
LOG.warning(
48-
"%s does not have TOTP in both Keycloak and LDAP "
49-
"(kc_registered=%s, ipa_registered=%s)",
50-
username,
51-
kc_registered,
52-
ipa_registered,
53-
)
54-
55-
# If already registered *somewhere*
56-
if kc_registered or ipa_registered:
41+
42+
# If already registered
43+
if kc_registered:
5744
return render_template("otp.html", version=version, configured=True)
5845

5946
secret = generate_kc_otp(username)
@@ -97,11 +84,8 @@ def enable():
9784
flash("2FA already configured.")
9885
return redirect("/otp")
9986

100-
create_ipa_otp(username, secret)
101-
app_passwd = set_app_passwd(username)
102-
10387
return render_template(
104-
"otp.html", version=version, configured=True, passwd=app_passwd
88+
"otp.html", version=version, configured=True
10589
)
10690

10791

selfservice/templates/otp.html

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,6 @@ <h3 class="card-title">Two Factor Settings</h3>
4242
<div class="alert alert-warning" role="alert">
4343
<strong>Keep this stored in a safe place!</strong> It can't be recovered after you leave this page.
4444
</div>
45-
<p class="card-text mt-3">
46-
In order for you to use services like mail that don't support two-factor, we have generated you a
47-
random password that you will need to use to access those services.
48-
49-
</p>
50-
<p class="otp-secret">{{passwd}}</p>
51-
<a href="/otp" class="btn btn-info" style="width:100%">
52-
<i class="fas fa-check"></i> Okay, I saved it!
53-
</a>
5445
{% else %}
5546
<p class="card-text mb-3">
5647
You already have two-factor configured. If you would like to disable it, please click the button below.

selfservice/utilities/ldap.py

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
Funtions dealing with direct LDAP and FreeIPA communications.
2+
Functions dealing with direct LDAP and FreeIPA communications.
33
"""
44

55
import re
@@ -80,31 +80,6 @@ def ipa_login():
8080
ipa.login(username, password)
8181

8282

83-
def create_ipa_otp(username, secret):
84-
"""
85-
Create an OTP object in FreeIPA for the given user.
86-
87-
Keyword arguments:
88-
username -- Username of account to use as object owner
89-
secret -- Secret generated by Keycloak
90-
"""
91-
ipa_login()
92-
data = {"ipatokenowner": username, "ipatokenotpkey": secret}
93-
ipa._request("otptoken_add", params=data)
94-
95-
96-
def has_ipa_otp(username):
97-
"""
98-
Check if the given user has any OTP tokens configured in FreeIPA.
99-
100-
Keyword arguments:
101-
username -- Username of account to check
102-
"""
103-
ipa_login()
104-
token_info = ipa._request("otptoken_find", params={"ipatokenowner": username})
105-
return len(token_info["result"]) > 0
106-
107-
10883
def delete_ipa_otp(username):
10984
"""
11085
Remove all OTP tokens from the given user's account.

0 commit comments

Comments
 (0)