使用 Azure B2c 执行 SSO 时无法保留用户状态,因为重定向 URI 指向主页
Unable to retain user state when performing SSO using Azure B2c as redirect URI is pointing to homepage
我已经使用 open ID connect 实施了 Azure SSO,我将在用户使用 office 帐户登录后将其重定向到我的门户主页。
问题是因为重定向 URL(localhost:443/abc/test.aspx) 是我们必须输入的常量,我不知道如何保留 URL 用户在登录前所在的位置(例如 localhost:443/abc/test.aspx#/item/30176)。 SSO 登录后,它仅将我重定向到 localhost:443/abc/test.aspx,我想登陆到 localhost:443/abc/test.aspx#/item/30176(30176 是可变的项目编号)
如果状态是唯一的出路。我找不到如何使用它。任何实施参考都会很有帮助
考虑使用 cookie 来记住原始 URL。用户认证后重定向。
• 您当然可以为此使用'state'参数将用户在成功验证后重定向到登录前的同一页面,但需要在'[=21中发送的验证请求中进行配置=]' 脚本。 state 参数还可用于在重定向之前对应用程序状态信息进行编码。您可以将用户在应用程序中的状态(例如他们所在的页面或视图)作为此参数的输入传递。 MSAL.js 库允许您将自定义状态作为请求对象中的状态参数传递,如下所示:-
// Request type
export type AuthenticationParameters = {
scopes?: Array<string>;
extraScopesToConsent?: Array<string>;
prompt?: string;
extraQueryParameters?: QPDict;
claimsRequest?: string;
authority?: string;
state?: string;
correlationId?: string;
account?: Account;
sid?: string;
loginHint?: string;
forceRefresh?: boolean;
};
您可以参考以下文档链接,了解有关在 Azure AD B2C 重定向链接中包含此参数的更多详细信息:-
https://docs.microsoft.com/en-us/azure/active-directory-b2c/authorization-code-flow
在 java 中,我称之为 URL
https://YOUR_TENANT_NAME.b2clogin.com/YOUR_TENANT_NAME.onmicrosoft.com/YOUR_POLICY_NAME/oauth2/v2.0/authorize?client_id=YOUR_CLIENT_ID&nonce=RANDOM_UNIQUE_STRING&redirect_uri=REDIRECT_URL&scope=openid&response_type=code&state=URLEncoder.encode(params.referer, "UTF-8")
//params.referer 是我的 URL,我的后端使用它来重定向客户,其中 s/he 在记录 in/authorization.
之前
成功授权后,我将获得状态 (MY_REDIRECT_URL) 值以及授权码。
我已经使用 open ID connect 实施了 Azure SSO,我将在用户使用 office 帐户登录后将其重定向到我的门户主页。
问题是因为重定向 URL(localhost:443/abc/test.aspx) 是我们必须输入的常量,我不知道如何保留 URL 用户在登录前所在的位置(例如 localhost:443/abc/test.aspx#/item/30176)。 SSO 登录后,它仅将我重定向到 localhost:443/abc/test.aspx,我想登陆到 localhost:443/abc/test.aspx#/item/30176(30176 是可变的项目编号)
如果状态是唯一的出路。我找不到如何使用它。任何实施参考都会很有帮助
考虑使用 cookie 来记住原始 URL。用户认证后重定向。
• 您当然可以为此使用'state'参数将用户在成功验证后重定向到登录前的同一页面,但需要在'[=21中发送的验证请求中进行配置=]' 脚本。 state 参数还可用于在重定向之前对应用程序状态信息进行编码。您可以将用户在应用程序中的状态(例如他们所在的页面或视图)作为此参数的输入传递。 MSAL.js 库允许您将自定义状态作为请求对象中的状态参数传递,如下所示:-
// Request type
export type AuthenticationParameters = {
scopes?: Array<string>;
extraScopesToConsent?: Array<string>;
prompt?: string;
extraQueryParameters?: QPDict;
claimsRequest?: string;
authority?: string;
state?: string;
correlationId?: string;
account?: Account;
sid?: string;
loginHint?: string;
forceRefresh?: boolean;
};
您可以参考以下文档链接,了解有关在 Azure AD B2C 重定向链接中包含此参数的更多详细信息:-
https://docs.microsoft.com/en-us/azure/active-directory-b2c/authorization-code-flow
在 java 中,我称之为 URL
https://YOUR_TENANT_NAME.b2clogin.com/YOUR_TENANT_NAME.onmicrosoft.com/YOUR_POLICY_NAME/oauth2/v2.0/authorize?client_id=YOUR_CLIENT_ID&nonce=RANDOM_UNIQUE_STRING&redirect_uri=REDIRECT_URL&scope=openid&response_type=code&state=URLEncoder.encode(params.referer, "UTF-8")
//params.referer 是我的 URL,我的后端使用它来重定向客户,其中 s/he 在记录 in/authorization.
之前成功授权后,我将获得状态 (MY_REDIRECT_URL) 值以及授权码。