Welcome to Streamlit RSA Authenticator UI 🔐
Encryption on Authenticate widget data from client to server.
What is Streamlit RSA Authenticator UI?
What is Http protocol
Http is the information transfer protocol between networked devices. However, all the requests and responses are in plaintext, which means that anyone can read them.
If you want to deploy streamlit server using http protocol (not https protocol) and you add the user authentication, user password can be read by anyone in the network as it is the plaintext for http protocol.
streamlit-rsa-auth-ui correct it by encrypting user information including password at the client browser before transmit to streamlit server using RSA algorithm
What is RSA algorithm
It is asymmetric cryptography, uses two different but mathematically linked keys
- Public key that can be share with everyone
- Private key must be kept secret
Installation
Open a terminal and run:
pip install streamlit-rsa-auth-ui
Quickstart
Gnerate RSA Key Pair
Create a new file generateKeys.py
from streamlit_rsa_auth_ui import Encryptor
encryptor = Encryptor.generateNew(2048)
encryptor.save('rsa', 'authkey')
Run generateKeys.py python script
python generateKeys.py
this will create a private key and public key pair
- private key with the file name
authkey - public key with the file name
authkey.pub
├── rsa
│ ├── authkey
│ │ authkey.pub
Create streamlit page
Create a new file example.py
import streamlit as st
from streamlit_rsa_auth_ui import Encryptor, authUI, SigninEvent, SigninFormConfig, getEvent
ss = st.session_state
encryptor = Encryptor.load('rsa', 'authkey')
ui = authUI('login_ui_result', encryptor.publicKeyPem)
def checkAuth(username: str, password: str):
return username == 'test' and password == 'New.Prog'
def login():
if 'event' in ss and type(ss.event) is SigninEvent: return True
result = ui.signinForm(default={'remember': True}, configs=SigninFormConfig(remember="Rememeber Me"))
if result is None: return None
_dict = encryptor.decrypt(result)
event = getEvent(_dict)
if type(event) is not SigninEvent or not checkAuth(event.username, event.password): return False
ss['event'] = event
st.rerun()
def logout():
result = ui.signoutForm()
if result is None: return False
_dict = encryptor.decrypt(result)
event = getEvent(_dict)
ss['event'] = event
return True
if not login(): st.stop()
with st.sidebar:
if logout(): st.rerun()
st.title('Streamlit Rsa Auth UI Test')
button = st.button('test')
button
Run the streamlit app
streamlit run example.py
Change Log
Version 0.0.1
- Initial release
Version 0.0.2
- Fix missing frontend issue
Version 0.0.3
- Optional 'cancel' button to signoutform
- Minor bug fixed
- Remove bootstrap.min.css warning
Version 0.0.4
- Remove location setting(seem redundunt as if you want to add to any container/sidebar you can call with syntax)
- Add in classname to frontend so that easier to add in custom styling if needed
- Remove off the unnecessary excess height of streamlit
Version 1.0.0
- More customizable UI
- Add inline mode
- Add ChangePassword UI
Version 1.1.0
- Add id property in event if no public key is provided
- Add AuthUI class
- Add Configs class
Version 1.1.1
- Fix 'no remember in signinevent' when remember option is disabled
Release files for streamlit-rsa-auth-ui 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| streamlit-rsa-auth-ui-1.1.1.tar.gz | 1.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| streamlit_rsa_auth_ui-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.6 MB
Release files / streamlit-rsa-auth-ui-1.1.1.tar.gz
| Download URL | streamlit-rsa-auth-ui-1.1.1.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b7e845895a00700ca3d02835c8f4626d44f5f4f08af19733870684842dd1f1cd
|
|
BLAKE2b-256 checksum How to use checksums |
9568b57762a36c1c28389367785369105e1b3b6c7cded612405ebcf3207b7e3a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.8.19
|
Release files / streamlit_rsa_auth_ui-1.1.1-py3-none-any.whl
| Download URL | streamlit_rsa_auth_ui-1.1.1-py3-none-any.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec1db29b3b3801f33ac24fbd15cc7dbbe2cde7dd1b01ca4408bf749badd8c2e9
|
|
BLAKE2b-256 checksum How to use checksums |
0e646b8959ad5b90b3b0e303bd46c9d86671c81267fa8df4fd4cb799e4d23efe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.8.19
|