Asp.net OpenID Identity Server, указывающий область, вызывает ошибку - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть сайт веб-формы ASP.Net, который я хочу аутентифицировать на Identity Server 3. В приложении Identity Server у меня есть определенный список областей действия (один из которых «электронная почта»).Но когда я запускаю свой код и пытаюсь аутентифицироваться, я получаю сообщение об ошибке.Если я удаляю свойство Scope, оно работает нормально, но не включает запрошенные поля Scope (имеет только общие утверждения).Вот мой код:

Public Sub ConfigureAuth(app As IAppBuilder)
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap = New Dictionary(Of String, String)
            app.UseCookieAuthentication(New CookieAuthenticationOptions() With {
                .AuthenticationType = "Cookies"
            })

            Dim OpenIdAuthOption = New OpenIdConnectAuthenticationOptions() With {
               .Authority = "https://myidentityserver.azurewebsites.net/core/",
               .ClientId = "adfasdfafasdfasfasf",
               .RedirectUri = "https://localhost:44321/default.aspx/",
               .ResponseType = OpenIdConnectResponseType.IdTokenToken,
               .SignInAsAuthenticationType = "Cookies",
               .Scope = "email",
               .Notifications = New OpenIdConnectAuthenticationNotifications() With {
                    .SecurityTokenReceived = Function(ctx)
                                                 Return Task.FromResult(0)
                                             End Function,
                    .MessageReceived = Function(ctx)
                                           Return Task.FromResult(0)
                                       End Function,
                    .SecurityTokenValidated = Function(ctx)
                                                  Dim claimPrincipal = ctx.AuthenticationTicket.Identity
                                                  TransformClaims(claimPrincipal)
                                                  Return Task.FromResult(0)
                                              End Function,
                    .AuthorizationCodeReceived = Function(ctx)
                                                     Return Task.FromResult(0)
                                                 End Function,
                    .RedirectToIdentityProvider = Function(context)
                                                      RedirectLogin(context)
                                                      Return Task.FromResult(0)
                                                  End Function
                    }
            }
            app.UseOpenIdConnectAuthentication(OpenIdAuthOption)
        End Sub

Я получаю ошибку:

"OpenIdConnectMessage.Error не был нулевым, что указывает на ошибку. Ошибка:" invalid_request ". Error_Description (можетбыть пустым): ''. Error_Uri (может быть пустым): ''. "

Может кто-нибудь объяснить, как я могу получить значения области (например," email ") от Identity Server?

1 Ответ

0 голосов
/ 23 февраля 2019

В настройках вашего клиента добавьте также openid, если вы используете тип ответа (IdTokenToken / CodeIdToken / CodeToken / CodeIdTokenToken)

Ваш код должен выглядеть как

*.1004 *
...