Я собираюсь получить токен на предъявителя через IdentityServer4 через мой веб-проект, и я получаю это исключение.Исключение составляет библиотека классов с открытым исходным кодом IdentityServer4.Поле url имеет значение null, и это вызывает исключение NullReference в методе AddQueryString, см. https://github.com/IdentityServer/IdentityServer4/blob/master/src/Extensions/StringsExtensions.cs
Файлы журнала показывают;
IdentityServer4.Endpoints.AuthorizeEndpoint: Information: ValidatedAuthorizeRequest{"ClientId": "SIR", "ClientName": "SIR", "RedirectUri": "http://localhost:53200/signin-oidc"," AllowedRedirectUris ": [" https://localhost:44314", "http://localhost:53200/signin-oidc"],"SubjectId ":" anonymous "," ResponseType ":" code id_token "," ResponseMode ":" form_post "," GrantType ":" hybrid "," RequestedScopes ":" openid profile "," State ":" OpenIdConnect.AuthenticationProperties =ответ http://localhost:53200/signin-oidc",» ": "636809130138863279.M2IyNTYyZTgtZTk0Ni00OWU5LWI4MmMtNGU2MWY4M2FkMzQzNzExYjRjYjYtOWY4MC00NjQwLWEyZGYtYzgzYjljZTY4ZDFj", "Raw": { "client_id":: "SIR", "redirect_uri" ""," Нонс WBfqf-a6W0K-0x6giakJP1GCkjUyG0wzOgAr9AuitPNyUb6wsIlzJN-YVV-ARRdTd5huJIIl3N0mpI95EbLzGKIVmAhXr4JiIWKo2dOCTFI7PH218T9V1vVkKP3kFmQgtRRYRagG9YEA2PvyMtxzQXMf4v3pPequ8Am7H_8TIfgMqspxAnTsXQ4K-cD_TBTVFc45AiDiylpWup1_Ovrpqu700JCGimHZJRuXP25MHMs_mode ": "form_post", "response_type": "id_token код", "Сфера": "профиль OpenID", "состояние": "OpenIdConnect.AuthenticationProperties = WBfqf-a6W0K-0x6giakJP1GCkjUyG0wzOgAr9AuitPNyUb6wsIlzJN-YVV-ARRdTd5huJIIl3N0mpI95EbLzGKIVmAhXr4JiIWKo2dOCTFI7PH218T9V1vVkKP3kFmQgtRRYRagG9YEA2PvyMtxzQXMf4v3pPequ8Am7H_8TIfgMqspxAnTsXQ4K-cD_TBTVFc45AiDiylpWup1_Ovrpqu700JCGimHZJRuXP25MHMs", "нонс": "636809130138863279.M2IyNTYyZTgtZTk0Ni00OWU5LWI4MmMtNGU2MWY4M2FkMzQzNzExYjRjYjYtOWY4MC00NjQwLWEyZGYtYzgzYjljZTY4ZDFj", "х-клиент-ы": "ID_NET461", "х-клиент-вер": "5.3.0.0"}} IdentityServer4.ResponseHandling.AuthorizeInteractionResponseGenerator: информация: Отображено Логин: Пользователь не идентифицирован IdentityServer4.ResponseHandling.AuthorizeInteractionResponseGenerator: Информация: Отображение имени для входа: пользователь не аутентифицирован IdentityServer4.ResponseHandling.AuthorizeInteractionResponseGenerator: Информация: Отображение имени для входа: пользователь не аутентифицирован IdentityServer4.ResponseHandling.AenetoponponGr: Информация: Отображение имени входа: пользователь не аутентифицирован. Исключение: «System.NullReferenceException» в IdentityServer4.dll. Исключение: «System.NullReferenceException» в IdentityServer4.dll, «dotnet.exe» (CoreCLR: clrhost): загружен «C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App \ 2.1.6 \ System.Diagnostics.StackTrace.dll '.Символы загружены.'dotnet.exe' (CoreCLR: clrhost): загружен 'C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App \ 2.1.6 \ System.Reflection.Metadata.dll'.Символы загружены.'dotnet.exe' (CoreCLR: clrhost): загружен 'C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App \ 2.1.6 \ System.IO.MemoryMappedFiles.dll'.Символы загружены.IdentityServer4.Hosting.IdentityServerMiddleware: Критическое: необработанное исключение: ссылка на объект не установлена для экземпляра объекта.
System.NullReferenceException: ссылка на объект не установлена на экземпляр объекта.в IdentityServer4.Extensions.StringExtensions.AddQueryString (строковый url, строковый запрос) в C: \ local \ identity \ server4 \ IdentityServer4 \ src \ Extensions \ StringsExtensions.cs: строка 197 в IdentityServer4.Endpoints.Results.LoginPxtte) в C: \ local \ identity \ server4 \ IdentityServer4 \ src \ Endpoints \ Results \ LoginPageResult.cs: строка 61 в IdentityServer4.Hosting.IdentityServerMiddleware.Invoke (контекст HttpContext, маршрутизатор IEndpointRouter, сеанс IUserSession, события IEUns \ \ InventService):local \ identity \ server4 \ IdentityServer4 \ src \ Hosting \ IdentityServerMiddleware.cs: строка 59 IdentityServer4.Hosting.IdentityServerMiddleware: Критическое:Необработанное исключение: ссылка на объект не установлена для экземпляра объекта.
Таким образом, в методе AddQueryString URL-адрес является нулевым.В моем веб-клиенте мой метод запуска:
public void Configuration(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = Settings.SignInAsAuthenticationType // "Cookies";
});
app.UseOpenIdConnectAuthentication(openIdConnectOptions: new OpenIdConnectAuthenticationOptions
{
AuthenticationType = "oidc",
Authority = Settings.AuthorityUrl, //ID Server, "https://localhost:44314/"; https://localhost:44307/
ClientId = Settings.ClientId, // "SIR"
Scope = Settings.Scope, // "openid profile";
ResponseType = Settings.ResponseType, // "id_token code";
SignInAsAuthenticationType = Settings.SignInAsAuthenticationType,
//--------------------------------------// "Cookies";
RedirectUri = Settings.RedirectUri, // URL of website, http://localhost:53200/signin-oidc;
RequireHttpsMetadata = Settings.RequireHttpsMetadata,
//--------------------------------------// true
ClientSecret = "secret"
});
app.Use(async (ctx, next) =>
{
var message = ctx.Authentication.User.Identity.IsAuthenticated
? $"User: {ctx.Authentication.User.Identity.Name}"
: "User Not Authenticated";
await next();
});
}
Обратите внимание, что я использую Microsoft.Owin
Клиент в моем IdentityServer4:
public static IEnumerable<Client> Clients()
{
return new[]
{
new Client
{
ClientId = "SIR",
ClientName = "SIR",
AllowedGrantTypes = GrantTypes.Hybrid,
AllowedScopes = new[]
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile
},
RedirectUris = {
"https://localhost:44314",
"http://localhost:53200/signin-oidc"
},
ClientSecrets = { new Secret("secret".Sha256())}
}
};
}
Почемуэто и как мне это исправить?