- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 asp.net core 3.1 附带的 IdentityServer 模板。到目前为止一切顺利,SPA 应用程序使用隐式流程。现在我有一个移动应用程序,我想与同一个身份服务器一起使用。
所以在 appsettings.json 我添加了一个新 key charla-mobile ,并将配置文件设置为 NativeApp ,假设我可以按照 https://github.com/dotnet/aspnetcore/blob/62c098bc170f50feca15916e81cb7f321ffc52ff/src/Identity/ApiAuthorization.IdentityServer/src/Configuration/ConfigureClients.cs#L56 使用我自己的配置:
"IdentityServer": {
"Key": {
"Type": "Development"
},
"Clients": {
"Charla": {
"Profile": "IdentityServerSPA"
},
"charla-mobile": {
"Enabled": true,
"Profile": "NativeApp",
"ClientName": "Charla Mobile Client (Code with PKCE)",
"RequireClientSecret" : false,
"RedirectUris": ["http://localhost:8100/implicit/authcallback", "com.appauth.demo://callback"],
"AllowedGrantTypes": [ "code", "implicit" ],
"RequirePkce": true,
"AllowedScopes": ["converse-appAPI", "openid", "profile"]
}
}
}
问题是我不断收到无效的redirect_uri,尽管我从具有相同网址(http://localhost:8100/implicit/authcallback)的javascript库中调用它:
Invalid redirect_uri: http: //localhost:8100/implicit/authcallback
{
"ClientId": "charla-mobile",
"ClientName": "charla-mobile",
"RedirectUri": null,
"AllowedRedirectUris": ["urn:ietf:wg:oauth:2.0:oob"],
"SubjectId": "anonymous",
"ResponseType": null,
"ResponseMode": null,
"GrantType": null,
"RequestedScopes": "",
"State": null,
"UiLocales": null,
"Nonce": null,
"AuthenticationContextReferenceClasses": null,
"DisplayMode": null,
"PromptMode": null,
"MaxAge": null,
"LoginHint": null,
"SessionId": null,
"Raw": {
"redirect_uri": "http://localhost:8100/implicit/authcallback",
"client_id": "charla-mobile",
"response_type": "code",
"state": "4qtaYswLFK",
"scope": "converse-appAPI openid profile",
"code_challenge": "opKV8gSVV5X7pQ7eTvQ3Lp40A7BXplkz4RiGkEFgBcc",
"code_challenge_method": "S256"
},
"$type": "AuthorizeRequestValidationLog"
}
并从 chrome 网络选项卡:
Application started. Press Ctrl+C to shut down.
[18:38:49 DBG] CORS request made for path: /.well-known/openid-configuration from origin: http://localhost:8100
[18:38:49 DBG] CorsPolicyService allowed origin: http://localhost:8100
[18:38:49 DBG] Login Url: /auth/login
[18:38:49 DBG] Login Return Url Parameter: ReturnUrl
[18:38:49 DBG] Logout Url: /Identity/Account/Logout
[18:38:49 DBG] ConsentUrl Url: /consent
[18:38:49 DBG] Consent Return Url Parameter: returnUrl
[18:38:49 DBG] Error Url: /home/error
[18:38:49 DBG] Error Id Parameter: errorId
[18:38:49 DBG] Request path /.well-known/openid-configuration matched to endpoint type Discovery
[18:38:49 DBG] Endpoint enabled: Discovery, successfully created handler: IdentityServer4.Endpoints.DiscoveryEndpoint
[18:38:49 INF] Invoking IdentityServer endpoint: IdentityServer4.Endpoints.DiscoveryEndpoint for /.well-known/openid-configuration
[18:38:49 DBG] Start discovery request
[18:38:49 DBG] Request path /connect/authorize matched to endpoint type Authorize
[18:38:49 DBG] Endpoint enabled: Authorize, successfully created handler: IdentityServer4.Endpoints.AuthorizeEndpoint
[18:38:49 INF] Invoking IdentityServer endpoint: IdentityServer4.Endpoints.AuthorizeEndpoint for /connect/authorize
[18:38:49 DBG] Start authorize request
[18:38:49 DBG] No user present in authorize request
[18:38:49 DBG] Start authorize request protocol validation
[18:38:49 DBG] client configuration validation for client charla-mobile succeeded.
[18:38:49 ERR] Invalid redirect_uri: http://localhost:8100/implicit/authcallback
{"ClientId": "charla-mobile", "ClientName": "charla-mobile", "RedirectUri": null, "AllowedRedirectUris": ["urn:ietf:wg:oauth:2.0:oob"], "SubjectId": "anonymous", "ResponseType": null, "ResponseMode": null, "GrantType": null, "RequestedScopes": "", "State": null, "UiLocales": null, "Nonce": null, "AuthenticationContextReferenceClasses": null, "DisplayMode": null, "PromptMode": null, "MaxAge": null, "LoginHint": null, "SessionId": null, "Raw": {"redirect_uri": "http://localhost:8100/implicit/authcallback", "client_id": "charla-mobile", "response_type": "code", "state": "G0Zn5uV8K4", "scope": "converse-appAPI openid profile", "code_challenge": "7vnsRsZRIzgf7Ti_gH-k1LY6fErlLZNrbfZlbQYCz7U", "code_challenge_method": "S256"}, "$type": "AuthorizeRequestValidationLog"}
[18:38:49 ERR] Request validation failed
[18:38:49 INF] {"ClientId": "charla-mobile", "ClientName": "charla-mobile", "RedirectUri": null, "AllowedRedirectUris": ["urn:ietf:wg:oauth:2.0:oob"], "SubjectId": "anonymous", "ResponseType": null, "ResponseMode": null, "GrantType": null, "RequestedScopes": "", "State": null, "UiLocales": null, "Nonce": null, "AuthenticationContextReferenceClasses": null, "DisplayMode": null, "PromptMode": null, "MaxAge": null, "LoginHint": null, "SessionId":
null, "Raw": {"redirect_uri": "http://localhost:8100/implicit/authcallback", "client_id": "charla-mobile", "response_type": "code", "state": "G0Zn5uV8K4", "scope": "converse-appAPI openid profile", "code_challenge": "7vnsRsZRIzgf7Ti_gH-k1LY6fErlLZNrbfZlbQYCz7U", "code_challenge_method": "S256"}, "$type": "AuthorizeRequestValidationLog"}
[18:38:49 INF] {"ClientId": "charla-mobile", "ClientName": "charla-mobile", "RedirectUri": null, "Endpoint": "Authorize", "SubjectId": null, "Scopes": "", "GrantType": null, "Error": "unauthorized_client", "ErrorDescription": "Invalid redirect_uri", "Category": "Token", "Name": "Token Issued Failure", "EventType": "Failure", "Id": 2001, "Message": null, "ActivityId": "0HM1T9FDQAMOT:00000001", "TimeStamp": "2020-08-10T16:38:49.0000000Z", "ProcessId": 13112, "LocalIpAddress": "::1:5000", "RemoteIpAddress": "::1", "$type": "TokenIssuedFailureEvent"}
最佳答案
我认为在代码中配置客户端更容易,以确保一切正确。我在想的是,如果您错过了 ClientID,并且如果 clientID 错误,那么 IS 找不到正确的重定向 URL?
我找到了这个例子 here
"IdentityServer": {
"IssuerUri": "urn:sso.company.com",
"Clients": [
{
"Enabled": true,
"ClientId": "local-dev",
"ClientName": "Local Development",
"ClientSecrets": [ { "Value": "<Insert Sha256 hash of the secret encoded as Base64 string>" } ],
"AllowedGrantTypes": [ "implicit" ],
"AllowedScopes": [ "openid", "profile" ],
"RedirectUris": [ "https://localhost:5001/signin-oidc" ],
"RequireConsent": false
}
]
关于c# - 无效的 redirect_uri IdentityServer4 和 AppAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63332069/
在登录并同意后使用任何标准身份提供者(谷歌、Facebook)时,他们会重定向到我的主要身份服务器,并让它重定向到在其中注册的隐式客户端。我如何使用另一个身份服务器作为外部身份提供者实现相同的行为?
我正在开发一个 SPA Web 应用程序,并且我正在使用 IdentityServer4 代码流来处理授权。所以我有以下组件: Angular 客户端应用程序,https://localhost:50
我正在设置 IdentityServer 的一个新实例作为身份提供者。登录时,我想在我的用户对象上设置一些额外的自定义声明。现在,我正在使用以下代码: [HttpPost] public async
我正在尝试遵循本指南 https://identityserver.github.io/Documentation/docs/advanced/customizingViews.html通过将 ass
当使用 IdentityServer 3 时签名证书(用于签名 jwt token )过期会发生什么? 我不清楚,我找不到任何文档,除了可能会收到它已过期的警告。 (Ref. https://iden
我有一个使用 IdentityServer4 进行 token 验证的 API。 我想使用内存中的 TestServer 对这个 API 进行单元测试。我想在内存中的 TestServer 中托管 I
我正在尝试将 Identity Server 4 与 Ocelot 集成并对 WebApp (asp.net core 3.1) 进行身份验证,然后在请求通过身份验证时访问 api。 为此我创建了一个
如果您有多个客户端和一个处理用户身份验证的中央 IdentityServer 4 实例,您将如何管理各个客户端的用户配置文件? 当前情况: 用户点击“管理个人资料” 用户被重定向到 IdentityS
我正在开发一个带有 angular 的前端应用程序和一个带有 Asp.Net Core 的后端应用程序,其中包含用于身份验证的 IdentityServer4(基于此 github project)。
我有一个包含用户的数据库,我该如何开始使用 IdentityServer 创建我的用户的自定义实现?我看到的所有示例都使用了用值硬编码的 InMemoryUser。 有人可以关注this作为指南? 最
我们公司有一个 SSO 应用程序,我希望用 IdentityServer4 或 3 替换大部分身份验证管道。我要替换的版本有自己的动态客户端注册自定义实现(不符合规范)和一个 UI 来管理它。 有nu
我正在使用 IdentityServerV3 对少数客户端的用户进行身份验证。我在配置 IdentityServer 时遇到问题,特定的 user 必须能够登录到特定的“客户端”。 让我们来看下面的场
目前我们正在使用 JWT token 进行身份验证(有效),但我想使用引用 token 。目前我们的配置是这样的: public static class Config { ///
我在启动 IdentityServer 3 时遇到问题。这是一个非常简单的设置,我打算将其用于开发环境,但我在诊断问题时遇到了问题。这是我的代码: Startup.cs using Owin;
我正在使用来自 IdentityServer 4 实例的 OAuth2。基于this example ,我能够登录并调用服务器托管的 API。 如何在不显示提示用户确认注销的 Web View 的情况
我是 IdentityServer 3 的新手,示例和教程使用的是 InMemory 用户、客户端和范围,但我需要这些来自 DB。所以我做了: 启动.cs public void Configurat
我一直在阅读和观看有关 Identity Server 4 的大量内容,但我仍然对它感到有些困惑,因为它似乎有太多的事件部分。 我现在明白这是一个单独的项目,它负责对用户进行身份验证。我仍然不明白的是
我似乎无法理解为什么我会从 IdentityServer 获得 unauthorized_client。我将 oidc-client 与 Angular 4 ui 和 Web API 的 asp.ne
我在 IdentityServer 中设置了以下客户端: new Client { ClientName = "My web application", Enabled = true,
在本地,我有一组 Web 应用程序都可以通过一次登录访问。 为此,我采用了 Identity Server 4。 一旦应用程序发布在本地服务器上,无法远程访问,我就通过 openssl 生成了一个 S
我是一名优秀的程序员,十分优秀!