gpt4 book ai didi

C# - Azure SSO token 过期引发错误

转载 作者:行者123 更新时间:2023-12-03 02:37:52 24 4
gpt4 key购买 nike

我正在尝试编写一个使用 Azure 作为 SSO 提供商的 C# Web 应用程序。

我使用 Owin 作为中间层。

        public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
// Sets the ClientId, authority, RedirectUri as obtained from web.config
ClientId = clientId,
Authority = authority,
RedirectUri = redirectUri,
// PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it is using the home page
PostLogoutRedirectUri = redirectUri,
Scope = OpenIdConnectScope.OpenIdProfile,
// ResponseType is set to request the id_token - which contains basic information about the signed-in user
ResponseType = OpenIdConnectResponseType.IdToken,
// ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
// To only allow users from a single organizations, set ValidateIssuer to true and 'tenant' setting in web.config to the tenant name
// To allow users from only a list of specific organizations, set ValidateIssuer to true and use ValidIssuers parameter
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = false // Simplification (see note below)
},
// OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = OnAuthenticationFailed
}
});
}

因此它可以正常登录,但在1小时之后,当我尝试执行 AJAX 请求时(无论页面是否刷新),我收到 CORS 错误,因为 token 已过期。

如何让 token “保持活跃”,以便用户没有 1 小时的时间来完成他们的工作?

最佳答案

token 生命周期策略是一种包含 token 生命周期规则的策略对象。使用策略的属性来控制指定的 token 生命周期。 如果未设置策略,系统将强制执行默认生命周期值。

您可以将访问 token 的生命周期设置为一天,这样您就不会在一小时的限制内过期。

enter image description here

您可以在服务主体、应用程序或租户上设置 token 生命周期配置。

您需要使用 Powershell 创建一个描述所需行为的策略,并将其链接到您的服务主体、租户或应用程序。请记住,如果您正在构建 Multi-Tenancy 应用,租户的所有者可以覆盖您的策略。

注意:不要依赖应用中的 token 生命周期,因为它可能随时更改。

您可以使用 Azure AD Powershell Commands 设置这些属性。然后运行以下命令来设置访问 token 生存期:

1.登录Powershell。

Connect-AzureAD -Confirm

2.创建新策略将访问 token 生命周期设置为 2 小时。您可以将其更改为 10 分钟到 1 天之间。

New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"24:00:00","MaxAgeSessionSingleFactor":"02:00:00"}}') -DisplayName "WebPolicyScenario" -IsOrganizationDefault $false -Type "TokenLifetimePolicy"

3.获取策略的ObjectId。

Get-AzureAdPolicy

4.将新政策链接到您的应用程序。您可以使用 GraphExplorer 获取应用程序的 objectId .

Add-AzureADApplicationPolicy -Id <ObjectId of the Application> -RefObjectId <ObjectId of the Policy>

更多详细信息,您可以引用这篇关于Azure AD Configurable Token Lifetime的文章.

关于C# - Azure SSO token 过期引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62525376/

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