私はADFSサーバーでASP.NET IDを使用しています。開発目的のために、私はADFSサーバーにアクセスできないネットワーク環境にいるときにADFSサーバーを使用しないでください。ログインしたアイデンティティユーザーを手動で設定するにはどうすればよいですか?
#if DEBUG
[AllowAnonymous]
public ActionResult LogIn()
{
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.NameIdentifier, "tester"));
System.Web.HttpContext.Current.User = new ClaimsPrincipal(new ClaimsIdentity(claims));
System.Threading.Thread.CurrentPrincipal = System.Web.HttpContext.Current.User;
return Redirect("Home/Index");
}
#endif
そしてOwin設定方法:
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions() { });
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = adfsMetadata
});
}
私はWsFederation認証が使用部分をコメントアウト私は手動で現在ログインしているユーザー設定の私にHomeControllerでシンプルなコントローラのアクションを追加した理由です問題なく、現在のADFSサーバーへのリンクはありません。
問題:Authorize属性を持つHome/Indexアクションにリダイレクトされると、ASP.NET IDが有効なログインとしてClaimsPrincipalを認識しないため、ホーム/ホーム/ログインとホーム/インデックス間のループを常に作成するログインアクション。
私の質問:上記で作成したClaimsPrincipalを有効なログインとして受け入れるにはどうすればよいですか?
助けてくれてありがとう! 何らかの理由で、まだCookieが設定されていません。誤って同じ名前のクラスを異なるナゲットパッケージで使用した場合があります。あるいは私のOwin設定ファイルが間違っているかもしれません。私の質問は、私のOwin Configurationがまさにそのように見えるように更新されました。私は今、仕事を中止していますので、明日まで再試行できません。 – ohyeah
@ohyeah私の更新を見てください。 – trailmax
素晴らしい作品です!この回答はADFSとはほとんど関係がないことに気付きました。そのため、私の最終的な解決策にあなたのコードを編集しました。うまくいけば、これをコピーしてプロジェクトに貼り付けるだけで十分です。 – ohyeah