我們正在使用IdentityServer3實施我們自己的SSO提供程序。我們幾乎完成,除了我們有要求,當用戶第一次登錄時,他們將不得不更改他們的用戶名,密碼並提供其他信息。問題在於用戶名的變化:它還需要更改主題ID,因此當部分登錄完成時,客戶端也會收到新用戶名,而不是舊用戶名。IdentityServer3在部分登錄期間更改主題/用戶名
因此,我們需要的是在部分登錄中更改sub
聲明的方法。在互聯網上搜索這個問題並沒有給我任何有用的結果。我試圖改變這一說法,但是我無法讓它在發佈請求之外持續存在。我做了以下幾點:
var ctx = Request.GetOwinContext();
var authentication = await ctx.Authentication.AuthenticateAsync(Constants.PartialSignInAuthenticationType);
authentication.Identity.RemoveClaim(identityResult.Identity.FindFirst("sub"));
authentication.Identity.AddClaim(new Claim("sub", model.NewUsername));
這不幸的是,不起作用,因爲我這裏的索賠只是副本。什麼是改變主題的正確方法?