Openid 连接回调未达到断点
Open Id Connect Callback not hitting break point
我正在使用 OpenIdConnect 连接到 IS4 服务器。一切正常,它强制我登录,然后使用正确的登录代码将我带回我的 MVC 站点以供将来 API 调用。
问题是我无法让我的应用程序处理回调。我的计划是将我的用户重定向到 SSO 登录,然后返回到我的站点,在那里我可以进行 API 调用以在我的系统中设置用户。
这是我的 MVC 应用程序中的身份验证服务
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://localhost:5000";
options.ClientId = "mvc";
options.ClientSecret = "49C1A7E1-0C79-4A89-A3D6-A37998FB86B0";
options.ResponseType = "code";
options.SaveTokens = true;
options.CallbackPath = "/Home/Login";
options.Scope.Add("api1");
options.Scope.Add("offline_access");
});
登录后,我希望能够在回电时收到响应“/Home/Login”
在我的 HomeController 中,我有以下两个操作
[HttpPost]
public IActionResult Login(string code)
{
_logger.LogError("TEST 1");
return View();
}
public IActionResult Login()
{
_logger.LogError("TEST 2");
return View();
}
都没有被击中,我需要做什么来控制我的用户在 SSO 提供商处登录后登陆的位置?
正如 所解释的,CallbackPath
是服务器在身份验证期间重定向的路径。它由 OIDC 中间件本身自动处理,这意味着我们无法通过创建新的 controller/action 并为其设置 CallbackPath
来控制逻辑。
根据您的要求,您可以在 OIDC OWIN Middlerware 中使用通知事件,它会调用以使开发人员能够添加自定义逻辑。例如,您可以查询数据库并在 OnTokenValidated
事件中创建用户:
options.Events = new OpenIdConnectEvents
{
OnTokenValidated = ctx =>
{
//query the database
var db = ctx.HttpContext.RequestServices.GetRequiredService<YourDbContext>();
//perform custom logic for user management in local database
return Task.CompletedTask;
},
};
我正在使用 OpenIdConnect 连接到 IS4 服务器。一切正常,它强制我登录,然后使用正确的登录代码将我带回我的 MVC 站点以供将来 API 调用。
问题是我无法让我的应用程序处理回调。我的计划是将我的用户重定向到 SSO 登录,然后返回到我的站点,在那里我可以进行 API 调用以在我的系统中设置用户。
这是我的 MVC 应用程序中的身份验证服务
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://localhost:5000";
options.ClientId = "mvc";
options.ClientSecret = "49C1A7E1-0C79-4A89-A3D6-A37998FB86B0";
options.ResponseType = "code";
options.SaveTokens = true;
options.CallbackPath = "/Home/Login";
options.Scope.Add("api1");
options.Scope.Add("offline_access");
});
登录后,我希望能够在回电时收到响应“/Home/Login”
在我的 HomeController 中,我有以下两个操作
[HttpPost]
public IActionResult Login(string code)
{
_logger.LogError("TEST 1");
return View();
}
public IActionResult Login()
{
_logger.LogError("TEST 2");
return View();
}
都没有被击中,我需要做什么来控制我的用户在 SSO 提供商处登录后登陆的位置?
正如 CallbackPath
是服务器在身份验证期间重定向的路径。它由 OIDC 中间件本身自动处理,这意味着我们无法通过创建新的 controller/action 并为其设置 CallbackPath
来控制逻辑。
根据您的要求,您可以在 OIDC OWIN Middlerware 中使用通知事件,它会调用以使开发人员能够添加自定义逻辑。例如,您可以查询数据库并在 OnTokenValidated
事件中创建用户:
options.Events = new OpenIdConnectEvents
{
OnTokenValidated = ctx =>
{
//query the database
var db = ctx.HttpContext.RequestServices.GetRequiredService<YourDbContext>();
//perform custom logic for user management in local database
return Task.CompletedTask;
},
};