ANTHROPIC · OPENAI · GOOGLE
AI Transformation
Assess the current state · Apply the framework · Build the roadmap
INTERNAL · SEG FRONTIER CAPABILITY UNITS
Live Azure Cloud Integration Inspector (React.js ↔ Python FastAPI ↔ Cognizant Entra ID)
GET /api/v1/auth/config (200 OK)
1. React.js SPA (Azure Static Web App / App Service)
Frontend Layer
// Stacked Hybrid Login State
// Top CTA: 1-Click OIDC via Python Backend
const handleCognizantSSO = () => {
const hint = emailInput.trim();
const url = new URL('/api/v1/auth/sso/login', API_BASE);
if (hint) url.searchParams.set('login_hint', hint);
window.location.assign(url.toString());
};
2. Python FastAPI + Azure Entra ID
Backend & IdP Layer
# Azure App Service Env Configuration
AZURE_TENANT_ID = "cognizant-tenant-guid"
AZURE_CLIENT_ID = "seg-fcu-portal-client-id"
OIDC_AUTHORITY = f"https://login.microsoftonline.com/{AZURE_TENANT_ID}"
# Supports both:
# 1) GET /api/v1/auth/sso/login (1-Click OIDC + PKCE)
# 2) POST /api/v1/auth/local/login (Credentials Fallback)
Azure Deployment Reference Implementation (React.js + Python FastAPI)
Architecture for Stacked Hybrid: 1-Click Cognizant SSO (MSAL / OIDC + PKCE) + Local Credentials Fallback
Frontend: src/pages/LoginPage.jsx (React.js)
import React, { useState } from 'react';
export function HybridLoginPage() {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
// 1-Click Cognizant SSO (Redirects via Python OIDC endpoint)
const handleOneClickSSO = () => {
const params = new URLSearchParams();
if (email.includes('@cognizant.com')) {
params.set('login_hint', email.trim());
}
window.location.href = `/api/v1/auth/sso/login?${params}`;
};
// Fallback Credentials Login
const handlePasswordLogin = async (e) => {
e.preventDefault();
const res = await fetch('/api/v1/auth/local/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
credentials: 'include',
body: JSON.stringify({ email, password }),
});
if (res.ok) window.location.href = '/dashboard';
};
return (/* Split-Card JSX matching prototype */);
}
Backend: app/routers/auth.py (Python FastAPI + MSAL)
from fastapi import APIRouter, Request, Response, HTTPException
from fastapi.responses import RedirectResponse
import msal, os
router = APIRouter(prefix="/api/v1/auth")
msal_app = msal.ConfidentialClientApplication(
client_id=os.environ["AZURE_CLIENT_ID"],
client_credential=os.environ["AZURE_CLIENT_SECRET"], # From Azure Key Vault
authority=f"https://login.microsoftonline.com/{os.environ['AZURE_TENANT_ID']}"
)
@router.get("/sso/login")
async def sso_login(login_hint: str | None = None):
flow = msal_app.initiate_auth_code_flow(
scopes=["User.Read"],
redirect_uri=os.environ["AZURE_REDIRECT_URI"],
login_hint=login_hint
)
# Persist flow['state'] & PKCE verifier in encrypted session/Redis
return RedirectResponse(flow["auth_uri"])
@router.get("/sso/callback")
async def sso_callback(request: Request, response: Response):
result = msal_app.acquire_token_by_auth_code_flow(
auth_code_flow=get_saved_flow(request),
auth_response=dict(request.query_params)
)
claims = result["id_token_claims"]
session_jwt = issue_app_jwt(sub=claims["preferred_username"], idp="entra_sso")
response = RedirectResponse(url="/dashboard")
response.set_cookie("seg_fcu_session", session_jwt, httponly=True, secure=True)
return response