状态参数(由 OAuth 2.0 定义)包含在身份验证请求中,并在令牌响应中返回,以防止跨站点请求伪造攻击。 默认情况下,适用于 JavaScript 的 Microsoft 身份验证库(MSAL.js)在身份验证请求中传递随机生成的唯一 状态 参数值。
状态参数还可用于在重定向之前对应用状态的信息进行编码。 您可以将应用中用户当前状态的引用作为此参数的输入,例如用户当时所在页面或视图的标识符。 MSAL.js 库允许在 Request 对象中将自定义状态作为状态参数传递。
Important
为了安全和隐私,请勿将 URL 或其他敏感数据直接置于状态参数中。 请改用与浏览器存储中存储的数据对应的密钥或标识符,例如 localStorage 或 sessionStorage。 此方法允许应用在身份验证后安全地引用必要的数据。 例如,可以在 sessionStorage 中存储实际 URL,并仅传递状态参数中的存储密钥。
例如:
import {PublicClientApplication} from "@azure/msal-browser";
const myMsalObj = new PublicClientApplication({
clientId: "ENTER_CLIENT_ID_HERE"
});
let loginRequest = {
scopes: ["user.read"],
state: "state_key"
}
myMSALObj.loginRedirect(loginRequest);
发送请求时,传入的状态将追加到由 MSAL.js 设置的唯一 GUID 集合中。 返回响应时,MSAL.js 检查状态匹配项,然后将 响应 对象中的自定义传入状态返回为 state。
若要了解详细信息,请阅读如何使用 MSAL.js生成单页应用程序(SPA )。