Skip to content

Commit b59b499

Browse files
committed
Updated the msal version
1 parent 51418df commit b59b499

4 files changed

Lines changed: 46 additions & 10 deletions

File tree

1-Authentication/7-sign-in-express-mfa/App/auth/AuthProvider.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ class AuthProvider {
7474
);
7575
}
7676

77+
doesRequireMFA(token) {
78+
// Decode the access token payload
79+
const tokenPayload = JSON.parse(atob(token.split('.')[1]));
80+
console.log(tokenPayload);
81+
return !tokenPayload.amr.includes("mfa");
82+
}
83+
7784
async handleRedirect(req, res, next) {
7885
const authCodeRequest = {
7986
...req.session.authCodeRequest,
@@ -110,7 +117,6 @@ class AuthProvider {
110117
*/
111118
getToken(scopes, redirectUri = "http://localhost:3000/") {
112119
return async function (req, res, next) {
113-
console.log(scopes);
114120
const msalInstance = authProvider.getMsalInstance(authProvider.config.msalConfig);
115121
try {
116122
msalInstance.getTokenCache().deserialize(req.session.tokenCache);
@@ -119,7 +125,6 @@ class AuthProvider {
119125
account: req.session.account,
120126
scopes: scopes,
121127
};
122-
123128
const tokenResponse = await msalInstance.acquireTokenSilent(silentRequest);
124129

125130
req.session.tokenCache = msalInstance.getTokenCache().serialize();
@@ -131,7 +136,7 @@ class AuthProvider {
131136

132137
const state = authProvider.cryptoProvider.base64Encode(
133138
JSON.stringify({
134-
redirectTo: 'http://localhost:3000/users/updateProfile',
139+
redirectTo: redirectUri,
135140
csrfToken: req.session.csrfToken,
136141
})
137142
);

1-Authentication/7-sign-in-express-mfa/App/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"author": "Microsoft",
99
"license": "MIT",
1010
"dependencies": {
11-
"@azure/msal-node": "^1.17.2",
11+
"@azure/msal-node": "^2.8.0",
1212
"axios": "^1.0.0",
1313
"cookie-parser": "^1.4.6",
1414
"dotenv": "^16.0.3",

1-Authentication/7-sign-in-express-mfa/App/routes/users.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
const express = require('express');
77
const router = express.Router();
88
const authProvider = require('../auth/AuthProvider');
9+
const temp = require("@azure/msal-node")
10+
911
var { fetch } = require("../fetch");
1012
const { GRAPH_ME_ENDPOINT,
1113
mfaProtectedResourceScope } = require('../authConfig');
@@ -29,22 +31,40 @@ router.get('/id',
2931
router.get(
3032
'/updateProfile',
3133
isAuthenticated, // check if user is authenticated
32-
authProvider.getToken(["User.ReadWrite"]), // check for mfa
34+
authProvider.getToken(["User.ReadWrite"]),
3335
async function (req, res, next) {
36+
let doesRequiredMFA = authProvider.doesRequireMFA(req.session.accessToken);
3437
const graphResponse = await fetch(
3538
GRAPH_ME_ENDPOINT,
3639
req.session.accessToken
3740
);
3841
res.render("updateProfile", {
3942
profile: graphResponse,
43+
doesRequiredMFA: doesRequiredMFA
4044
});
4145
}
4246
);
4347

48+
router.get(
49+
'/gatedUpdateProfile',
50+
isAuthenticated, // check if user is authenticated
51+
authProvider.getToken(["User.ReadWrite", mfaProtectedResourceScope],
52+
"http://localhost:3000/users/gatedUpdateProfile"), // check for mfa
53+
async function (req, res, next) {
54+
const graphResponse = await fetch(
55+
GRAPH_ME_ENDPOINT,
56+
req.session.accessToken
57+
);
58+
res.render("updateProfile", {
59+
profile: graphResponse,
60+
doesRequiredMFA: false
61+
});
62+
}
63+
);
64+
4465
router.post(
4566
'/update',
4667
isAuthenticated, // check if user is authenticated
47-
authProvider.getToken(["User.ReadWrite", mfaProtectedResourceScope]), // check for mfa
4868
async function (req, res, next) {
4969
try {
5070
if (!!req.body) {

1-Authentication/7-sign-in-express-mfa/App/views/updateProfile.hbs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55
<label>Id :</label>
66
<label> {{profile.id}}</label>
77
<br/>
8-
<label for="userName">Display Name :</label>
9-
<input type="text" id="displayName" name="displayName" value="{{profile.displayName}}" />
8+
<label>Email :</label>
9+
<label> {{profile.mail}}</label>
10+
<br/>
11+
<label for="userName" >Display Name :</label>
12+
<input type="text" id="displayName" name="displayName" {{#if doesRequiredMFA}}disabled{{else}}{{/if}} value="{{profile.displayName}}" />
1013
<br />
1114
<label for="userName">Given Name :</label>
1215
<input type="text" id="givenName" name="givenName" value="{{profile.givenName}}" />
@@ -16,11 +19,19 @@
1619
<input type="text" id="surname" name="surname" value="{{profile.surname}}" />
1720
<br />
1821

19-
<label for="userEmail">Email :</label>
22+
{{!-- <label for="userEmail">Email :</label>
2023
<input type="text" id="mail" name="mail" value="{{profile.mail}}" readonly />
21-
<br />
24+
<br /> --}}
2225

2326
<button type="submit" id="button">Save</button>
2427
</form>
28+
{{#if doesRequiredMFA}}
29+
<p>To Edit Name please complete MFA</p>
30+
<a href="/users/gatedUpdateProfile">
31+
<button>Edit display name</button>
32+
</a>
33+
{{else}}
34+
<br />
35+
{{/if}}
2536
</div>
2637
<a href="/">Go back</a>

0 commit comments

Comments
 (0)