Мне нужно обновить (или понизить) мой веб-сайт, чтобы использовать локальную страницу входа. У меня все работало, используя гибридный поток, используя следующий код
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions(){});
А затем, когда токен вернется, он даст мне доступ для завершения логики аутентификации в asp.net, установив идентификатор утверждения, принципала и т. д.
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions()
{
Notifications = new OpenIdConnectAuthenticationNotifications()
{
SecurityTokenValidated = async n =>
{
// perform transform, etc..
n.AuthenticationTicket = new AuthenticationTicket(
identity, n.AuthenticationTicket.Properties);
await Task.FromResult(0);
}
}
});
Теперь я собираюсь собрать имя пользователя и пароль из метода действия MVC. Таким образом я могу получить токен доступа от клиента.
[HttpPost]
public ActionResult Login(LoginModel model)
{
var client = new TokenClient(
StsSettings.TokenEndpoint,
ClientId,
Secret);
var x = client.RequestResourceOwnerPasswordAsync(model.UserName, model.Password, "customid openid").Result;
return View(model);
}
Но я не уверен, как проще всего указать ASP.NET указывать на мою пользовательскую страницу входа вместо сервера идентификации. Буду ли я использовать логику аутентификации с помощью форм и создавать AuthenticationTicket? Также как лучше установить ClaimsIdentity (я знаю как вернуть претензии, только нужен "крючок")