본문 바로가기
기술자료 (KB)/Python

02. Streamlit으로 AD 인증 오류 처리하기

by 이완주 2024. 7. 30.

 

 

01. Streamlit으로 AD 인증 페이지 만들기

여기서는 Streamlit 기능과 Ldap3 버전을 이용하여 간단하게 인증페이지를 구성해 보았다.  Streamlit 및 python-ldap 설치pip install streamlit python-ldappip install ldap3  로그인 창에 ID / Password 를 입력하면 Acti

leemcse.tistory.com

 

아래 변경 사항 정리 내역 입니다.

 

1. 서버 정보 입력

서버의 IP를 하드 코딩으로 넣다 보니 다른 환경에 적응하기 어려울 듯 하여 서버의 이름 혹은 IP를 받아서 인증을 할 수 있게 구성

 

입력창에 서버 정보를 받는 창을 추가

server = st.text_input('서버 이름 혹은 IP 주소')

 

입력 받은 정보를 authenticate 모듈을 호출하여 결과값에 따라 로그인 성공 유무 확인

if authenticate(server, username, password):
   	st.success('로그인 성공')
else:
	st.error('로그인 실패')

 

 

authenticate 모듈에 입력 받은 값을 넣는다.

입력 받은 값을 conn 변수에 넣는다.

연결 (bind) 하여 성공적으로 연결 되는지 확인 한다.

def authenticate(server, username, password):
    try:
        # LDAP 서버에 연결
        conn = Connection(server, user=username, password=password)
          
        if conn.bind():
             return True
        else:
            return False
        
    except Exception as e:
        st.error(f"인증 오류 : {str(e)}")
        return False

 

 

2. 로그인 에러 메시지를 나타나게 구성

위에 연결 화면에 try, excep 처리를 하여 오류가 발생하는지 확인하고 오류가 발생하게 되면 화면에 메시지 표시

 

아래 인증 오류 : 오류 메시지

 

3. 로그인ID, 비밀번호, 서버정보 Null 처리

해당 값을 넣지 않으면 오류가 나타나게 구성

 

로그인 버튼을 클릭하게 되면 아래 If 조건에 의해 값이 입력 되지 않으면 오류가 나타나게 구성

if st.button('로그인'):
    if not username:
            st.error("로그인 ID를 입력하세요.")
    elif not password:
        st.error("비밀번호를 입력하세요.")
    elif not server:
        st.error("서버 이름 혹은 IP를 입력하세요.")
    else:
        if authenticate(server, username, password):
            st.success('로그인 성공')
        else:
            st.error('로그인 실패')

 

 

변경 된 소스 코드

import streamlit as st
from ldap3 import Server, Connection, ALL

def authenticate(server, username, password):
    try:
        # LDAP 서버에 연결
        conn = Connection(server, user=username, password=password)
          
        if conn.bind():
             return True
        else:
            return False
        
    except Exception as e:
        st.error(f"인증 오류 : {str(e)}")
        return False

# Streamlit UI
st.title('Active Directory 로그인 페이지')

username = st.text_input('로그인 ID')
password = st.text_input('비밀번호', type='password')
server = st.text_input('서버 이름 혹은 IP 주소')

if st.button('로그인'):
    if not username:
        st.error("로그인 ID를 입력하세요.")
    elif not password:
        st.error("비밀번호를 입력하세요.")
    elif not server:
        st.error("서버 이름 혹은 IP를 입력하세요.")
    else:
        if authenticate(server, username, password):
            st.success('로그인 성공')
        else:
            st.error('로그인 실패')

 

 

 

03. Streamlit으로 로그인 페이지와 메인 페이지

02. Streamlit으로 AD 인증 오류 처리하기01. Streamlit으로 AD 인증 페이지 만들기여기서는 Streamlit 기능과 Ldap3 버전을 이용하여 간단하게 인증페이지를 구성해 보았다.  Streamlit 및 python-ldap 설치pip inst

leemcse.tistory.com

 

 

 

 

 

댓글