Hello everyone, i just released a MSAL integration for Streamlit, it’s pretty straight forward, there is two ways to use it:
UI Example (Easiest way)
This example uses “initialize_ui”, that provides a UI with the core functionality in a simple but beautiful way.
import streamlit as st
from streamlit_msal import Msal
with st.sidebar:
auth_data = Msal.initialize_ui(
client_id=client_id,
authority=authority,
scopes=[], # Optional
# Customize (Default values):
connecting_label="Connecting",
disconnected_label="Disconnected",
sign_in_label="Sign in",
sign_out_label="Sign out"
)
if not auth_data:
st.write("Authenticate to access protected content")
st.stop()
account = auth_data["account"]
name = account["name"]
st.write(f"Hello {name}!")
st.write("Protected content available")
Headless example (Build your UI)
This example uses “initialize”, that doesn’t provide a UI so you can create your own.
from streamlit_msal import Msal
auth_data = Msal.initialize(
client_id=client_id,
authority=authority,
scopes=[],
)
if st.button("Sign in"):
Msal.sign_in() # Show popup to select account
if st.button("Sign out"):
Msal.sign_out() # Clears auth_data
if st.button("Revalidate"):
Msal.revalidate() # Usefull to refresh "accessToken"
Here is the full documentation: