尝试在旧版 MVC 应用程序中实现 OWIN/Open ID(我们尝试了 MSAL,但遇到了一些错误) - 这是一个混合身份验证应用程序,以表单身份验证作为主要选项,以 Open ID 作为选项,因此我们想要获得的所有内容是 ID_TOKEN 并将其与我们的本地用户配置文件相匹配。
我遇到的问题是重定向没有点击控制器操作,而是被重定向,我不明白为什么 - 我调用身份验证挑战,选择我的帐户,然后这个。我可以使用邮递员,它可以很好地击中控制器。
正如您从网络抓取中看到的那样,它使用正确的负载调用 /callback,获取 302 并重定向。认为这可能与 XSS 或其他什么有关,因为它在点击控制器之前就得到了 302。
感谢您的任何帮助 - 在这个问题上已经没有想法了。
这是重定向网址(/回调)。请注意,这是 .Net 框架,而不是 Core。
/// <returns></returns>
[AllowAnonymous]
//[HttpPost]
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
[DisableCors]
public async Task<ActionResult> callback ( string code = "",string id_token = "" )
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties { RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}**strong text**
和 Startup_auth
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
var oidcOptions = new OpenIdConnectAuthenticationOptions
{
Authority = authority,
ClientId = clientId,
ClientSecret = secret,
PostLogoutRedirectUri =logoffUri,
RedirectUri = redirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = OnAuthenticationFailed
},
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = false
},
ResponseType = OpenIdConnectResponseType.IdToken,
Scope = OpenIdConnectScope.OpenIdProfile
};
还有网络日志
哦,伙计,在过去 6 个月使用 Microsoft Identity Web 犯下所有可能的错误之后,我对您的处境表示理解。从你的问题来看,我不确定你是否已经放弃了 Microsoft Identity Web,转而使用 ASP.NET Core Identity 或者...其他东西。无论如何,让我分享一下在阅读您的问题时我想到的最重要的三件事: