为了账号安全,请及时绑定邮箱和手机立即绑定

使用身份服务器4登录子域多租户

使用身份服务器4登录子域多租户

C#
开满天机 2022-09-04 17:03:53
我正在尝试使用身份服务器4实现多租户应用程序,假设我有web1.local.comweb2.local.com当我登录到 web1.local.com 其他域时,web2.local.com 也会自动登录。有没有办法将这些登录名分开?我正在考虑有自定义实现IUserSessionpublic virtual async Task CreateSessionIdAsync(ClaimsPrincipal principal, AuthenticationProperties properties){    if (principal == null) throw new ArgumentNullException(nameof(principal));    if (properties == null) throw new ArgumentNullException(nameof(properties));    var currentSubjectId = (await GetUserAsync())?.GetSubjectId();    var newSubjectId = principal.GetSubjectId();    if (!properties.Items.ContainsKey(SessionIdKey) || currentSubjectId != newSubjectId)    {        properties.Items[SessionIdKey] = CryptoRandom.CreateUniqueId(16);    }    IssueSessionIdCookie(properties.Items[SessionIdKey]);    Principal = principal;    Properties = properties;}private void IssueSessionIdCookie(string sid){    if (Options.Endpoints.EnableCheckSessionEndpoint)    {        if (GetSessionIdCookieValue() != sid)        {            HttpContext.Response.Cookies.Append(                Options.Authentication.CheckSessionCookieName,                sid,                CreateSessionIdCookieOptions());        }    }}什么是最好的方法?
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

我相信您遇到的问题是,一旦会话cookie由IdentityServer发出,无论最初用于登录哪个应用程序,IdentityServer将始终跳过来自任何其他应用程序的后续请求的登录(因为最初管理的会话cookie)。

若要始终强制在不同应用程序之间进行身份验证,可以在授权请求上使用“prompt”查询字符串,并将其设置为等于“login”。更多信息可以在这里找到:http://docs.identityserver.io/en/latest/endpoints/authorize.html?highlight=prompt


查看完整回答
反对 回复 2022-09-04
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信