Войти com WSFederation C#. NET - PullRequest
       17

Войти com WSFederation C#. NET

0 голосов
/ 21 апреля 2020

Olá. Estou tentando внедряет аутентичную федерацию. O Arquivo xml foi disponibilizado por um terceiro e funciona numa aplicação MVC criada do zero, mas na minha aplicação que tenho que воплощение, não funciona.

ApiController:

[HttpGet]
public void SignIn()
{
    // Send a WSFederation sign-in request.
    if (!HttpContext.Current.Request.IsAuthenticated)
    {
        HttpContext.Current.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, WsFederationAuthenticationDefaults.AuthenticationType);
    }
}

public void SignOut()
{
    // Send a WSFederation sign-out request.
    HttpContext.Current.GetOwinContext().Authentication.SignOut(WsFederationAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType);
}
1005 Запуск:
public class Startup
{
    private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
    private static string metadata = string.Format(@".........");

    public void Configuration(IAppBuilder app)
    {
        app.Map("/api", ConfigureApi);

        ConfigureAuth(app);
    }

    private void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = realm,
                MetadataAddress = metadata,
                Notifications = new WsFederationAuthenticationNotifications
                {
                    AuthenticationFailed = context =>
                    {
                        context.HandleResponse();
                        context.Response.Redirect("Home/Error?message=" + context.Exception.Message);
                        return Task.FromResult(0);
                    }
                }
            });
    }


    private void ConfigureApi(IAppBuilder app)
    {
        HttpConfiguration config = new HttpConfiguration();
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
        config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter() { CamelCaseText = true });

        config.MapHttpAttributeRoutes();
        config.Filters.Add(new NmExceptionFilterAttribute());
        config.Filters.Add(new ElmahErrorAttribute());
        config.BindParameter(typeof(NmUserFile), new UserFileModelBinder());
        config.EnableCors();
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.LocalOnly;
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        app.UseWebApi(config);
        app.Run(x => { return Task.Delay(0); });
        config.EnsureInitialized();
    }
}

Порядок входа в систему без перенаправления для входа в систему для обслуживания клиентов? * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

...