Почему GetExternalLoginInfoAsyn c () возвращает null, когда я использую OpenIDConnect для аутентификации? - PullRequest
0 голосов
/ 19 апреля 2020

Мне очень трудно заставить OpenIDConnect правильно работать с этим asp. net 4.6 mvc 5 проектом. Недавно я получил ошибку 404 и в итоге добавил собственный маршрут к действию обратного вызова, чтобы заставить его работать после этого. После того, как я начал получать сообщение об ошибке GetExternalLoginInfoAsyn c (), возвращающей null и получающей исключение nullreference. Вот так выглядит мой конфиг с отредактированными вещами вместе с маршрутизацией. Также предоставленное изображение является одной из ошибок, которые я получаю, если я не использую пользовательскую маршрутизацию, я просто получаю ошибку 404.

OpenIdConnect nonce cook ie есть, также в URL-адресе оно отправляет состояние и код

https://localhost:44348/signin-oidc/?code=e33dab0ae5e9640ef731c460180780092703727b&state=OpenIdConnect.AuthenticationProperties%3D-JlLC-VdZi-KZst8OY4JikRrl59vm19HATAcOaqUv8a22U8ch9gC_IJARHlsvaDKZQrqfeTewtdk5d-KcZSrUR3qCoJVcmzNRDP8C0JJ2NH9ql42J3H1xkxEzoAvJ0wxITy-tCj5H-N-bYhMZbO4kB8s2S4msCF0kEDzgipoPmGfZfreUeyYcerwK_OJGH3uYKUYa1NjqA0G-hlhiYpUj8DUp59EXpDz6sr1wtohTiI

enter image description here

код

var json = "";
        using (WebClient wc = new WebClient())
        {
            json = wc.DownloadString("http://orders.data443.com/oauth/openid-configuration.php");
        }

        var settings = new OpenIdConnectAuthenticationOptions
        {
            Authority = "https://orders.data443.com/oauth/",
            ClientId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            RedirectUri = "https://localhost:44348/signin-oidc/",
            CallbackPath = new PathString("/signin-oidc/"),
            Configuration = new OpenIdConnectConfiguration(json),
            ResponseType = OpenIdConnectResponseType.Code,
            SignInAsAuthenticationType = "Cookies",
            TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = false,
            },
            Scope = "openid email profile"
        };
        app.UseOpenIdConnectAuthentication(settings);

Маршрутизация

        routes.MapRoute(
        name: "signin-oidc",
        url: "signin-oidc",
        defaults: new { controller = "Account", action = "ExternalLoginCallback" });
...