
# Azure AD Auth Kit

Easily integrate Microsoft Azure Active Directory login into your Node.js apps — with full support for **OAuth login** and **SSO silent login**.

## 📦 Installation

```bash
npm install azure-ad-auth-kit
```

After installation, a folder `sso-oauth/` will appear in your project with working backend code.

---

## 📁 What’s Included

| File                          | Description                                 |
|-------------------------------|---------------------------------------------|
| `sample/sample.js`           | Express server for login + token exchange   |
| `lib/azureAdAuth.js`         | Microsoft token and profile logic           |
| `postinstall.js`             | Auto-copies files to `sso-oauth/`           |

---

## 🔐 Available Routes

| Endpoint           | Purpose                                         |
|--------------------|-------------------------------------------------|
| `/login`           | Microsoft OAuth2 login with account picker      |
| `/silent-login`    | Silent login (SSO) if user session is active    |
| `/redirect`        | Handles `code` exchange, returns user+tokens    |
| `/profile`         | Returns user profile using access tokens        |

---

## ⚙️ Setup

Open `sso-oauth/sample/sample.js` and configure this block at the top:

```js
const config = {
  TENANT_ID: "your-tenant-id",
  CLIENT_ID: "your-client-id",
  CLIENT_SECRET: "your-client-secret",
  REDIRECT_URI: "http://localhost:3000/redirect",
  JWT_SECRET: "your-super-secret",
  FRONTEND_DASHBOARD_URL: "http://localhost:5173/dashboard" // Optional, not used in latest version
};
```

> 💡 You can get these values from Azure → App Registrations → Your App → Overview & Certificates

Also make sure `http://localhost:3000/redirect` is added in Azure → **Authentication → Redirect URIs**

---

## ▶️ Run the Sample

```bash
node sso-oauth/sample/sample.js
```

Then test in browser:

- `http://localhost:3000/login` → OAuth with account picker
- `http://localhost:3000/silent-login` → SSO (silent auth)
- After login → JSON with JWT, graphToken and user

---

## 🧪 Sample JSON Response

```json
{
  "message": "✅ Login Successful",
  "from": "OAuth",
  "token": "eyJhbGci...",
  "graphToken": "eyJ0eXAi...",
  "user": {
    "email": "awais@x-age.ai",
    "name": "Awais",
    "id": "c266d1d5-6c79-4028-a93e-1fc10bcb6866"
  }
}
```

---

## 📄 License

MIT © Awais Aslam
