Я не могу понять, что я делаю неправильно здесь. Я получил почти все, что работает на сервере идентификации 3, и я не считаю себя новичком, но мне действительно трудно перенаправить из приложения javascript из моего выбранного URL-адреса переадресации после использования сгенерированной ссылки для выхода из системы. Некоторые вещи были опущены для краткости (например, полный токен jwt).Нет автоматического перенаправления на конечной точке выхода IdentityServer3
Вот мой запрос:
https://identity.mysite.com/id/connect/endsession?id_token_hint=jwt-id-token&post_logout_redirect_uri=http://localhost:3000/
Вот клиент конфигурации:
new Client
{
ClientName = "Website User",
ClientId = "webuser",
Flow = Flows.AuthorizationCode,
RequireConsent = false,
AllowedCorsOrigins = new List<string>()
{
CloudConfigurationManager.GetSetting("Auth:CorsOriginPrimary"),
CloudConfigurationManager.GetSetting("Auth:CorsOriginSecondary"),
},
RedirectUris = new List<string>
{
CloudConfigurationManager.GetSetting("Auth:RedirectUri"),
CloudConfigurationManager.GetSetting("Auth:SecondaryRedirectUri"),
CloudConfigurationManager.GetSetting("Auth:TertiaryRedirectUri")
},
ClientSecrets = new List<Secret>
{
new Secret(CloudConfigurationManager.GetSetting("WebUser:Secret").Sha256())
},
PostLogoutRedirectUris = new List<string>
{
CloudConfigurationManager.GetSetting("Auth:WebPostLogoutUri"),
CloudConfigurationManager.GetSetting("Auth:WebPostLogoutUri:Local")
},
AllowAccessToAllScopes = true
},
Вот фабрика конфигурации (CORS) материал:
var corsPolicy = new DefaultCorsPolicyService
{
AllowedOrigins = new[]
{
"https://storageurl.blob.core.windows.net",
CloudConfigurationManager.GetSetting("Auth:CorsOriginPrimary"),
CloudConfigurationManager.GetSetting("Auth:CorsOriginSecondary")
},
AllowAll = true
};
Конечно AllowAll = верно на самом деле я просто пытался заставить его работать.
Вот соответствующие записи конфигурации:
<add key="Auth:RedirectUri" value="http://localhost:3000/_oauth/oidc/" />
<add key="Auth:SecondaryRedirectUri" value="http://mysiteloc.com:3000/_oauth/oidc" />
<add key="Auth:TertiaryRedirectUri" value="http://localhost:3000/_oauth/oidc" />
<add key="Auth:CorsOriginPrimary" value="http://localhost:3000" />
<add key="Auth:CorsOriginSecondary" value="http://mysiteloc.com:3000" />
<add key="Auth:WebPostLogoutUri" value="http://localhost:3000/" />
<add key="Auth:WebPostLogoutUri:Local" value="http://mysiteloc:3000/" />
А потом вот журналы. Похоже, что с CORS что-то может быть не так, но я не уверен. Я бы подумал, что разрешение исходных данных в заводской конфигурации и конфигурации клиента будет достаточно, но у меня все еще возникают проблемы.
2017-01-30 16:52:14.2034 INFO: Redirecting to logout page
2017-01-30 16:52:14.2465 INFO: Logout prompt for subject: 2054e687-777b-4ca3-bb20-ee59d8a1dc28
2017-01-30 16:52:14.2465 INFO: EnableSignOutPrompt set to false, performing logout
2017-01-30 16:52:14.2465 INFO: Logout endpoint submitted
2017-01-30 16:52:14.2465 INFO: Logout requested for subject: 2054e687-777b-4ca3-bb20-ee59d8a1dc28
2017-01-30 16:52:14.2465 INFO: Clearing cookies
2017-01-30 16:52:14.2580 INFO: rendering logged out page
2017-01-30 16:52:14.5831 INFO: CSP Report endpoint requested
2017-01-30 16:52:14.5831 INFO: CSP Report data: {"csp-report":{"document-uri":"https://identity.mysite.com/id/logout","referrer":"http://localhost:3000/reservations/purchase","violated-directive":"script-src 'self' ","effective-directive":"script-src","original-policy":"default-src 'self'; script-src 'self' ; style-src 'self' 'unsafe-inline' ; img-src *; font-src 'self' https://storageurl.blob.core.windows.net/; report-uri https://identity.mysite.com/id/csp/report","blocked-uri":"eval","line-number":174,"column-number":361,"source-file":"https://identity.mysite.com/id/assets/scripts.2.5.0.js","status-code":0}}
2017-01-30 16:52:14.5831 INFO: Rendering 204
2017-01-30 16:52:14.7738 INFO: End session callback requested
2017-01-30 16:52:14.7738 DEBUG: No client end session iframe URLs
Все, что вы можете мне помочь, было бы удивительно. Я подумал, что, возможно, мне нужно передать код авторизации вместо фактического токена ID здесь, но я видел другие примеры, где они передают токен идентификатора, и он отлично работает. Что мне не хватает?
Редактировать: При взгляде на вкладку сети в Chrome это также похоже на то, что конечная точка конечного конца перенаправляет меня на endessioncallback? Sid = [some-sort-of-id]. Это нормальное поведение?
Другая мысль - когда я отправляю параметр id_token_hint, нужно ли включать какой тип токена? Например, мне нужно обозначение «Носитель» перед токеном? – Ryan
Нет, только id_token как jwt. –