OIDC ソリューションの Thinktecture IdentityServer CodeFlowClient サンプルを見ています。実行できなくて困っています。Thinktecture.IdentityModel.Oidc プロジェクトで定義されている OpenIdConnectAuthenticationModule を使用します。このクラス内で、cookie からの oidcstate の読み取りに問題があります。次のコードを参照してください。
// 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 が AuthenticateAsync の後に呼び出される OnEndRequest に記述されていることです。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」の値を持つ必要がありますか?
これについての助けをいただければ幸いです。
よろしくベン