我正在查看OIDC解決方案中的Thinktecture IdentityServer CodeFlowClient示例。我無法運行它。它使用Thinktecture.IdentityModel.Oidc項目中定義的OpenIdConnectAuthenticationModule。在這個課堂上,我從Cookie中讀取oidcstate時遇到問題。請參閱下面的代碼。試圖讓Thinktecture IdentityServer示例CodeFlowClient工作
// read and parse state cookie
var cookie = new ProtectedCookie(ProtectionMode.MachineKey);
var storedState = cookie.Read("oidcstate");
ProtectedCookie.Delete("oidcstate");
var separator = storedState.IndexOf('_');
變量storedState的值爲null。我感到困惑的是,oidcstate是在OnEndRequest中編寫的,後者在AuthenticateAsync之後調用。 AuthenticateAsync具有Cookie讀取代碼。請參閱下面的OnEndRequest中的代碼。
var cookie = new ProtectedCookie(ProtectionMode.MachineKey);
cookie.Write("oidcstate", state + "_" + returnUrl, DateTime.UtcNow.AddHours(1));
沒有其他地方oidcstate被寫入,所以我不知道我做錯了什麼。在閱讀之前如何書寫oidcstate?
另外什麼是iodcClient配置上的appRelativeCallbackUrl字段?它有一個默認值「〜/ oidccallback」。在AuthenticateAsync中,它與請求AppRelativeCurrentExecutionFilePath進行比較。請參閱下面的代碼。
var appRelativeCallbackUrl = config.AppRelativeCallbackUrl;
if (context.Request.AppRelativeCurrentExecutionFilePath.Equals(appRelativeCallbackUrl, StringComparison.OrdinalIgnoreCase))
{
它應該具有「〜/ Home」的值嗎?
任何幫助,這將不勝感激,
問候奔
謝謝你的回答。我迷路了,因爲我正在瀏覽其他頁面,而不是擁有Authorize屬性的Home/Claims。 – user3221987