gpt4 book ai didi

owin - Azure ADAL 刷新 id_token

转载 作者:行者123 更新时间:2023-12-05 00:23:56 24 4
gpt4 key购买 nike

我们正在开发一个 Multi-Tenancy Web 应用程序。我们的租户将使用 Windows Azure Active Directory 进行身份验证。我们正在使用 OWIN OpenIdConnect 中间件对用户进行身份验证。我们在认证过程后收到的响应有 id_token 和授权码。

我们还想获取刷新 token ,以便在 id_token 过期后获取新 token 。因此,在 AuthorizationCodeReceived 处理程序中,我们使用 ADAL 库中的 AcquireTokenByAuthorizationCode 方法来获取刷新 token 。响应包含 id_token、access_token 和 refresh_token。

然后我们随后使用 referh_token 来获取新的 id_token,但是响应只包含更新的 access_token 而不是更新的 id_token。是可以刷新id_token还是只能刷新access_token?为授权代码接收处理程序截取的代码如下所示。

AuthorizationCodeReceived = (context) =>
{
string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + "/";
var code = context.Code;
string clientSecret = ConfigurationManager.AppSettings["ida:Password"];
ClientCredential credential = new ClientCredential(clientId, clientSecret);
string tenantID = context.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
string signedInUserID = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
MAuthenticationContext authContext = new MAuthenticationContext(string.Format("https://login.windows.net/{0}", tenantID), null);
AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(
code, new Uri(appBaseUrl), credential, "https://graph.windows.net");

AuthenticationResult refreshTokenResult = authContext.AcquireTokenByRefreshToken(result.RefreshToken, credential);

return Task.FromResult(0);
},

最佳答案

通常,您不能使用 refresh_token 来更新 id_token,因为 id_token 代表用户身份验证,即在用户不在的情况下无法刷新的信息。 OpenID Connect ( http://openid.net/specs/openid-connect-session-1_0.html ) 的 session 管理草案中描述了刷新 id_token 的方法,即通过身份验证请求再次将用户(代理)发送到授权端点,如果需要,该请求可能包含“prompt=none”无需用户交互,只需与 OP 核对现有 SSO session 即可。

Azure AD 支持规范草案中描述的 session 管理功能。如果您想将 OP session 与您的应用程序 session 同步,这是要走的路。 OTOH 您可以选择拥有一个独立于 OP session 的应用程序 session ,使用它自己的 session 超时和持续时间,在这种情况下,没有理由刷新 id_token。然后 id_token 仅用于引导应用程序 session ,然后该 session 独立存在。

关于owin - Azure ADAL 刷新 id_token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27288107/

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