7

Пытается использовать Thindecture identityserver v3 как простой sts для нескольких приложений mvc.
Я могу пройти через образцы приложений и выполнить нормально, но все они используют встроенный идентификационный сервер. Мне нужно, чтобы identserver был отдельным приложением, чтобы я мог использовать его как sts для нескольких приложений. Когда я пытаюсь запустить идентификационный сервер и подключить образец приложения mvc к нему, похоже, что-то не хватает.thinktecture identityserver v3

Образец MVC приложение использует катану

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions... 

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

Здесь моя конфигурация полагающейся стороны как mvc. Я тогда последняя IS v3 работает нетронутым здесь: : 44333

В MVC приложение всякий раз, когда я пытаюсь перейти к виду, который требует авторизации я получаю исключение.

Трассировка стека:

[HttpRequestException: Response status code does not indicate success: 404 (Not Found).] 
    System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() +87960 
    Microsoft.IdentityModel.Protocols.<GetDocumentAsync>d__0.MoveNext() +496 

[IOException: Unable to get document from: https://localhost:44333/.well-known/openid-configuration] 
    Microsoft.IdentityModel.Protocols.<GetDocumentAsync>d__0.MoveNext() +830 
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
    System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 
    Microsoft.IdentityModel.Protocols.<GetAsync>d__0.MoveNext() +512 
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
    System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 
    Microsoft.IdentityModel.Protocols.<GetConfigurationAsync>d__3.MoveNext() +1332 

здесь является полная авторизация конфигурации в приложении MVC.

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions 
{ 
    //Authority = "https://localhost:44319/identity", 
    Authority = "https://localhost:44333", 
    ClientId = "mvc", 
    Scope = "openid profile roles", 
    RedirectUri = "https://localhost:44319/", 

    SignInAsAuthenticationType = "Cookies", 
    UseTokenLifetime = false, 

    Notifications = new OpenIdConnectAuthenticationNotifications 
    { 
     SecurityTokenValidated = async n => 
      { 
       var id = n.AuthenticationTicket.Identity; 

       // we want to keep first name, last name, subject and roles 
       var givenName = id.FindFirst(Constants.ClaimTypes.GivenName); 
       var familyName = id.FindFirst(Constants.ClaimTypes.FamilyName); 
       var sub = id.FindFirst(Constants.ClaimTypes.Subject); 
       var roles = id.FindAll(Constants.ClaimTypes.Role); 

       // create new identity and set name and role claim type 
       var nid = new ClaimsIdentity(
        id.AuthenticationType, 
        Constants.ClaimTypes.GivenName, 
        Constants.ClaimTypes.Role); 

       nid.AddClaim(givenName); 
       nid.AddClaim(familyName); 
       nid.AddClaim(sub); 
       nid.AddClaims(roles); 

       // keep the id_token for logout 
       nid.AddClaim(new Claim("id_token", n.ProtocolMessage.IdToken)); 

       // add some other app specific claim 
       nid.AddClaim(new Claim("app_specific", "some data")); 

       n.AuthenticationTicket = new AuthenticationTicket(
        nid, 
        n.AuthenticationTicket.Properties); 
      }, 
     RedirectToIdentityProvider = async n => 
      { 
       if (n.ProtocolMessage.RequestType == OpenIdConnectRequestType.LogoutRequest) 
       { 
        var idTokenHint = n.OwinContext.Authentication.User.FindFirst("id_token"); 

        if (idTokenHint != null) 
        { 
         n.ProtocolMessage.IdTokenHint = idTokenHint.Value; 
        } 
       } 
      } 
    } 
}); 
+0

Ну я немного дальше, но все равно был бы признателен за руководство к моей глупости, если кто-то готов предложить. Изменив полномочия и добавив параметр MeadataAddress в mvc, я собирался заставить его работать. Authority = "https://idsrv3.com", MetadataAddress = "https: // localhost: 44333/core/.well-known/openid-configuration", – Aaron792000

+0

Вы могли бы добавить содержимое файла Startup.cs, который вы использовали настроить IdentityServerv3? Я также создал учебник по настройке IdSrv3, там у вас есть конфигурация Idsrv, а также приложение Mvc, запрашивающее некоторый публичный ресурс после того, как пользователь дал согласие: [ссылка на учебник] (http://cedric-dumont.com/tutorials/ identityserver-v3-membershipreboot-angularjs-webapi-2-and-mvc-mix-it-introduction /) –

+0

Я рекомендую эту проблему, обновляя страницу, решив ее. Кажется, что сайт STS не реагирует некоторое время. –

ответ

0

Ваша конечная точка отсутствует /identity в конце

Смежные вопросы