gpt4 book ai didi

javascript - 是否可以使用 Microsoft 身份验证库但不使用重定向 Uri 从 SPA 进行身份验证?

转载 作者:行者123 更新时间:2023-12-01 00:01:15 25 4
gpt4 key购买 nike

我正在创建一个 Javascript 单页应用程序。它要求用户在隐式流程期间登录,以便稍后使用 Microsoft Graph API。我正在使用 MSAL.js 并尝试改编 this guide 中的片段从authRedirectCallBack

获取身份验证 token

我意识到在其他流程中重定向 uri(在身份验证后使用)对于获取 token 并继续处理至关重要。然而,在我的流程中,我在 Javascript 回调函数中处理了 token 。

是否可以避免在使用 Azure AD 进行应用注册时和/或在代码执行期间提供重定向 uri?我根本不想将用户带到此重定向 uri。

目前我的代码如下所示:

var msalConfig = {
auth: {
clientId: 'my-app-id',
},
cache: {
cacheLocation: "localStorage",
storeAuthStateInCookie: true,
forceRefresh: false
}
};
const loginRequest = {scopes: ['openid', 'profile', 'user.read']};
const msalClient = new Msal.UserAgentApplication(msalConfig);
msalClient.handleRedirectCallback(authRedirectCallBack);
singIn();

async function singIn() {
try {
msalClient.loginPopup(loginRequest).then(function (response) {
if (msalClient.getAccount()) {
console.log('logged');
}
});
} catch (err) {
console.log(err);
}
}

function authRedirectCallBack(err, response) {
if (err) {
console.log(err);
} else {
if (response.tokenType === "access_token") {
console.log('token', response);
}
}
}

最佳答案

需要重定向 URI,因为它是我们用来确保响应不会返回给未经授权的一方的主要安全机制,因为隐式流程依赖于将 iframe/popups/windows 重定向回您的应用程序,其中的响应url 的哈希值。

请注意,如果您使用 loginPopup/acquireTokenPopup/acquireTokenSilent,最终用户将不会真正“看到”此重定向页面,因为仅在隐藏的 iframe(用于 acquireTokenSilent)或弹出窗口中短暂访问该页面。一旦 MSAL.js 发现 iframe/popup 已重定向回您的应用程序,就会解析响应并关闭 popup/iframe。

我们正在开发该库的新版本,该版本将切换到带有 PKCE 的身份验证代码流程,该流程不会使用隐藏的 iframe,但仍将使用弹出窗口/重定向。

您能否进一步解释一下为什么您不希望用户访问重定向页面?

关于javascript - 是否可以使用 Microsoft 身份验证库但不使用重定向 Uri 从 SPA 进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60709135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com