āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ Firebase Authentication with Identity Platform āĻāĻĒāĻā§āϰā§āĻĄ āĻāϰ⧠āĻĨāĻžāĻā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻĒāĻāύā§āĻĻā§āϰ SAML āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ Firebase āĻ ā§āϝāĻžāĻĒā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻāĻĒāύāĻžāϰ SAML-āĻāĻŋāϤā§āϤāĻŋāĻ SSO āϏāĻŽāĻžāϧāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āĻāϰ⧠āϤā§āϞā§āĨ¤
Firebase Authentication āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏā§āĻāύāĻž SAML āĻĒā§āϰāĻŦāĻžāĻšāĻā§ āϏāĻŽāϰā§āĻĨāύ āĻāϰā§āĨ¤
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§
SAML āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻĨāĻŽā§ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻāĻžāĻ āĻĨā§āĻā§ āĻāĻŋāĻā§ āϤāĻĨā§āϝ āϏāĻāĻā§āϰāĻš āĻāϰāϤ⧠āĻšāĻŦā§:
- āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏāϤā§āϤāĻž āĻāĻāĻĄāĻŋ : āĻāĻāĻāĻŋ URI āϝāĻž āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āĻā§ āĻļāύāĻžāĻā§āϤ āĻāϰā§āĨ¤
- āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ SAML SSO URL : āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϰ URL⧎
- āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏāϰā§āĻŦāĻāύā§āύ āĻā§ āĻļāĻāϏāĻžāĻĒāϤā§āϰ : āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻāĻŋ āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏā§āĻŦāĻžāĻā§āώāϰāĻŋāϤ āĻā§āĻā§āύ āϝāĻžāĻāĻžāĻ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧāĨ¤
- āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏāϤā§āϤāĻž āĻāĻāĻĄāĻŋ : āĻāĻāĻāĻŋ URI āϝāĻž āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ, "āĻĒāϰāĻŋāώā§āĻŦāĻž āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§" āϏāύāĻžāĻā§āϤ āĻāϰā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§ āĻāĻĒāϰā§āϰ āϤāĻĨā§āϝ āĻĒāĻžāĻāϝāĻŧāĻžāϰ āĻĒāϰā§, āĻāĻĒāύāĻžāϰ Firebase āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻšāĻŋāϏāĻžāĻŦā§ SAML āϏāĻā§āώāĻŽ āĻāϰā§āύ:
āĻāĻĒāύāĻžāϰ JavaScript āĻĒā§āϰāĻāϞā§āĻĒā§ Firebase āϝā§āĻ āĻāϰā§āύ āĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ Firebase Authentication with Identity Platform āĻāĻĒāĻā§āϰā§āĻĄ āύāĻž āĻāϰ⧠āĻĨāĻžāĻā§āύ āϤāĻŦā§ āϤāĻž āĻāϰā§āύ⧎ SAML āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻĒāĻā§āϰā§āĻĄ āĻāϰāĻž āĻĒā§āϰāĻāϞā§āĻĒāĻā§āϞāĻŋāϤ⧠āĻāĻĒāϞāĻŦā§āϧāĨ¤
Firebase āĻāύāϏā§āϞā§āϰ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻĒā§āώā§āĻ āĻžāϝāĻŧ, āύāϤā§āύ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϝā§āĻ āĻāϰā§āύ āĻā§āϞāĻŋāĻ āĻāϰā§āύ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ⧠SAML āĻ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤
āĻāĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻāĻāĻāĻŋ āύāĻžāĻŽ āĻĻāĻŋāύ. āϝ⧠āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ āĻāĻāĻĄāĻŋ āϤā§āϰāĻŋ āĻšāϝāĻŧā§āĻā§ āϤāĻž āύā§āĻ āĻāϰā§āύ:
saml.example-provider
āĻŽāϤ āĻāĻŋāĻā§āĨ¤ āĻāĻĒāύāĻŋ āϝāĻāύ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ āϏāĻžāĻāύ-āĻāύ āĻā§āĻĄ āϝā§āĻ āĻāϰāĻŦā§āύ āϤāĻāύ āĻāĻĒāύāĻžāϰ āĻāĻ āĻāĻāĻĄāĻŋāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāĻŦā§āĨ¤āĻāĻĒāύāĻžāϰ āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏāϤā§āϤāĻž āĻāĻāĻĄāĻŋ, SSO URL āĻāĻŦāĻ āϏāϰā§āĻŦāĻāύā§āύ āĻā§ āĻļāĻāϏāĻžāĻĒāϤā§āϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ⧎ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ (āĻĒāϰāĻŋāώā§āĻŦāĻž āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§) āϏāϤā§āϤāĻž āĻāĻāĻĄāĻŋ āĻāϞā§āϞā§āĻ āĻāϰā§āύāĨ¤ āĻāĻ āĻŽāĻžāύāĻā§āϞāĻŋ āĻ āĻŦāĻļā§āϝāĻ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āĻŽāĻžāύāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻšā§āĻŦāĻšā§ āĻŽā§āϞā§ā§ˇ
āĻāĻĒāύāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ.
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āĻĄā§āĻŽā§āύ āĻ āύā§āĻŽā§āĻĻāύ āύāĻž āĻāϰ⧠āĻĨāĻžāĻā§āύ, āϤāĻžāĻšāϞ⧠Firebase āĻāύāϏā§āϞā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ > āϏā§āĻāĻŋāĻāϏ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻ āύā§āĻŽāϤāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϝāĻŧ āĻāĻāĻŋ āϝā§āĻ āĻāϰā§āύāĨ¤
Firebase SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āύ
Firebase JavaScript SDK āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤā§, āĻāĻ āϧāĻžāĻĒāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ:
Firebase āĻāύāϏā§āϞ⧠āĻāĻĒāύāĻŋ āϝ⧠āĻĒā§āϰā§āĻāĻžāĻāĻĄāĻžāϰ āĻāĻāĻĄāĻŋ āĻĒā§āϝāĻŧā§āĻā§āύ āϏā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ
SAMLAuthProvider
āĻāϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āϤā§āϰāĻŋ āĻāϰā§āύāĨ¤Web
import { SAMLAuthProvider } from "firebase/auth"; const provider = new SAMLAuthProvider('saml.example-provider');
Web
var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider'); ``
SAML āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻ āĻŦāĻā§āĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Firebase āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻšāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻ āĻĨāĻŦāĻž āĻāĻāĻāĻŋ āĻĒāĻĒ-āĻāĻĒ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻāĻāύā§āĻĄā§āϤ⧠āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻž āĻā§āϞāϤ⧠āĻĒāĻžāϰā§āύ⧎
āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļāĻŋāϤ āĻĒā§āϰāĻŦāĻžāĻš
signInWithRedirect()
āĻāϞ āĻāϰ⧠āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏāĻžāĻāύ-āĻāύ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āύ :Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ-āĻāύ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ āĻĢāĻŋāϰ⧠āĻāϏāĻžāϰ āĻĒāϰā§, āĻāĻĒāύāĻŋ
getRedirectResult()
āĻāϞ āĻāϰ⧠āϏāĻžāĻāύ-āĻāύ āĻĢāϞāĻžāĻĢāϞ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤Web
import { getAuth, getRedirectResult, SAMLAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // User is signed in. // Provider data available using getAdditionalUserInfo() }) .catch((error) => { // Handle error. });
Web
firebase.auth().getRedirectResult() .then((result) => { // User is signed in. // Provider data available in result.additionalUserInfo.profile, // or from the user's ID token obtained from result.user.getIdToken() // as an object in the firebase.sign_in_attributes custom claim. }) .catch((error) => { // Handle error. });
āĻĒāĻĒ-āĻāĻĒ āĻĒā§āϰāĻŦāĻžāĻš
Web
import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // User is signed in. // Provider data available in result.additionalUserInfo.profile, // or from the user's ID token obtained from result.user.getIdToken() // as an object in the firebase.sign_in_attributes custom claim. }) .catch((error) => { // Handle error. });
Web
firebase.auth().signInWithPopup(provider) .then((result) => { // User is signed in. // Provider data available in result.additionalUserInfo.profile, // or from the user's ID token obtained from result.user.getIdToken() // as an object in the firebase.sign_in_attributes custom claim. }) .catch((error) => { // Handle error. });
ID āĻā§āĻā§āύ āĻāĻŦāĻ UserInfo āĻ āĻŦāĻā§āĻā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻž āĻĨāĻžāĻā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϝāĻĻāĻŋ āĻāĻāĻŋ āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ SAML āĻĻāĻžāĻŦāĻŋāϰ
NameID
āĻŦā§āĻļāĻŋāώā§āĻā§āϝ⧠āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻž āĻšāϝāĻŧ:<Subject> <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">test@email.com</NameID> </Subject>
āϝāĻĻāĻŋāĻ āĻāĻĒāϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖāĻā§āϞāĻŋ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻāĻĒāϰ āĻĢā§āĻāĻžāϏ āĻāϰā§, āĻāĻĒāύāĻŋ
linkWithRedirect()
āĻāĻŦāĻlinkWithPopup()
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ SAML āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āĻā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻ āĻāϰāϤ⧠āĻāĻāĻ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻreauthenticateWithRedirect()
āĻāĻŦāĻreauthenticateWithPopup()
āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āϝāĻž āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ āϞāĻāĻāύ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻāĻŽāύ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒā§āϰ āĻāύā§āϝ āύāϤā§āύ āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤