Использование образца 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. Как вы видите О действии имеет атрибут 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 предоставит претензии к серверу идентификации, а сервер идентификации, в свою очередь, должен вернуть эти утверждения в представление About. Может ли кто-нибудь помочь мне здесь.
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 бит. Возможно, вы столкнулись с другой ошибкой, которая также регистрируется.