Я пытаюсь получить доступ к заявлениям пользователей, которые возвращаются из входа в ADFS. ADFS возвращает имя пользователя и с этим именем пользователя я должен запустить запрос в другой БД, чтобы получить информацию о пользователе и сохранить его. Я не знаю, где это сделать и что такое лучшая практика. Я могу получить доступ к претензии пользователя в контроллере представления, как:Получите претензии пользователей до того, как любая страница загрузится на внешний вход в ADFS
public ActionResult Index()
{
var ctx = Request.GetOwinContext();
ClaimsPrincipal user = ctx.Authentication.User;
IEnumerable<Claim> claims = user.Claims;
return View();
}
Но что мне нужно сделать, это, как я сказал, претензия доступа, как в Global.asax.cs или startup.cs для хранения пользовательской информации до запуска приложения.
Это мой Startup.Auth.cs файл:
public partial class Startup
{
private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(WsFederationAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(
new CookieAuthenticationOptions
{
AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType
});
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = adfsMetadata
});
}
}
Это работает, чтобы получить информацию о пользователе, но теперь у меня есть еще одна проблема. Аутентификация кажется пожизненной, и когда я пытаюсь подключиться к серверу, он думает, что я вошел в систему в любом случае, а не перенаправляюсь на авторизацию ADFS. Интересно, если я должен изменить CookieAuthenticationDefaults на WsFederationAuthenticationDefaults, чтобы решить эту проблему или любую идею, что может быть неправильным в моем коде? – elly
Извините, мое плохое, что-то не так со сборкой. В любом случае это решило это! Спасибо. – elly