Использование образца customuserservice для Identity Server V3 в MVC не может перенаправить на страницу входа

Я использую образец CustomUserService для Identity server v3. Я добавил домашний контроллер, как показано ниже: `public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); }

    [Authorize]
    public ActionResult About()
    {
        //ViewBag.Message = "Your application description page.";

        //return View();
        return View((User as ClaimsPrincipal).Claims);

    }`

И добавлено 2 представления About.cshtml и Index.cshtml. Как видите, действие About имеет атрибут Authorize. Поэтому, когда я перехожу к «О программе», я должен быть перенаправлен на страницу входа в систему Identity Server V3, однако этого не происходит. Мой полный файл startup.cs выглядит следующим образом:

public void Configuration(IAppBuilder app)
    {
        LogProvider.SetCurrentLogProvider(new DiagnosticsTraceLogProvider());

        app.Map("/core", coreApp =>
        {
            var factory = InMemoryFactory.Create(
                clients: Clients.Get(),
                scopes: Scopes.Get());

            // different examples of custom user services
            var userService = new RegisterFirstExternalRegistrationUserService();
            //var userService = new ExternalRegistrationUserService();
            //var userService = new EulaAtLoginUserService();
            //var userService = new LocalRegistrationUserService();

            factory.UserService = new Registration<IUserService>(resolver => userService);

            var options = new IdentityServerOptions
            {
                //IssuerUri = "https://idsrv3.com",
                IssuerUri = "https://localhost:44333/",
                SiteName = "Thinktecture IdentityServer3 - CustomUserService",
                //SigningCertificate = LoadCertificate(),
                SigningCertificate = Certificate.Get(),
                Factory = factory,
                CorsPolicy = CorsPolicy.AllowAll,

                AuthenticationOptions = new Thinktecture.IdentityServer.Core.Configuration.AuthenticationOptions
                {
                    IdentityProviders = ConfigureAdditionalIdentityProviders,
                    LoginPageLinks = new LoginPageLink[] { 
                        new LoginPageLink{
                            Text = "Register",
                            //Href = "~/localregistration"
                            Href = "localregistration"
                        }
                    }
                },

                EventsOptions = new EventsOptions
                {
                    RaiseSuccessEvents = true,
                    RaiseErrorEvents = true,
                    RaiseFailureEvents = true,
                    RaiseInformationEvents = true
                }
            };

            coreApp.UseIdentityServer(options);
        });

Я использую пример CustomerUserService, потому что хочу использовать WSfederation. Таким образом, ADFS будет предоставлять утверждения серверу идентификации, а сервер идентификации, в свою очередь, должен возвращать эти утверждения в представление «О программе». Может ли кто-нибудь помочь мне здесь.




Ответы (1)


Я столкнулся с похожей ситуацией, когда возникли ошибки при инициализации Identity Server. Я включил ведение журнала в Web.config:

http://identityserver.github.io/Documentation/docs/configuration/logging.html

    <system.diagnostics>
      <trace autoflush="true" indentsize="4">
       <listeners>
        <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="d:\logs\STS.log" />
        <remove name="Default" />
       </listeners>
      </trace>
     </system.diagnostics> 

Журналы показали, что длина ключа моего сертификата меньше 2048 бит. Возможно, вы столкнулись с другой ошибкой, которая также регистрируется.

person sipkowich    schedule 02.04.2015