Streamlit MSAL (Microsoft Authentication Library) released

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:

6 Likes

Thank you for sharing the authentication library that allows us to customize the UI, umm, one question, is there any way we can put our customized redirectUrl?

I found that this integration is very sensitive and prone to errors when dealing with the redirectUrl, but well, i could add this option, but right now i canā€™t invest time in further development

Thank you for quick reply, looking forward to having this option in the future.