gpt4 book ai didi

asp.net-mvc - Identity Server 3 - 客户端应用程序未知或未授权

转载 作者:行者123 更新时间:2023-12-03 01:48:08 24 4
gpt4 key购买 nike

我收到错误“客户端应用程序未知或未授权。”当访问我网站的 protected 区域时。

这是我的客户:

public static class Clients
{
public static IEnumerable<Client> Get()
{
return new[]
{
new Client
{
Enabled = true,
ClientName = "Web Application",
ClientId = "webapplication",
Flow = Flows.AuthorizationCode,

ClientSecrets = new List<Secret>
{
new Secret("webappsecret".Sha256())
},

RedirectUris = new List<string>
{
UrlManager.WebApplication
},
PostLogoutRedirectUris = new List<string>
{
UrlManager.WebApplication
},

AllowedScopes = new List<string>
{
Constants.StandardScopes.OpenId,
Constants.StandardScopes.Profile,
Constants.StandardScopes.Email,
Constants.StandardScopes.Roles,
Constants.StandardScopes.OfflineAccess,
"read",
"write"
}
}
};
}
}

这是我的网络应用程序启动:

public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies"
});

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = UrlManager.AuthenticationService + "identity",

ClientId = "webapplication",
Scope = "openid profile",
ResponseType = "code id_token",
RedirectUri = UrlManager.WebApplication,

SignInAsAuthenticationType = "Cookies"
});
}
}

这是我的身份验证服务(安装了 IDS3)启动:

public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/identity", idsrvApp =>
{
idsrvApp.UseIdentityServer(new IdentityServerOptions
{
SiteName = "Authentication Service - Embedded IdentityServer",
SigningCertificate = Certificate.LoadCertificate(),

Factory = new IdentityServerServiceFactory()
.UseInMemoryUsers(Users.Get())
.UseInMemoryClients(Clients.Get())
.UseInMemoryScopes(Scopes.Get())
});
});
}
}

这是 UrlManager:

public static class UrlManager
{
public static string WebApplication
{
get { return "https://localhost:44381/"; }
}

public static string AuthenticationService
{
get { return "https://localhost:44329/"; }
}
}

这是我的家庭 Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

[Authorize]
public ActionResult Private()
{
return View((User as ClaimsPrincipal).Claims);
}
}

当我访问 Private 时,我会看到 Identity Server 3 屏幕,其中显示错误消息“客户端应用程序未知或未授权。”。

我读到这可能是由于重定向 URI 中的不匹配造成的,但据我所知,我的结果是正确的。我不知道还有什么原因会导致它。如果我将流程更改为隐式,但我想实现 AuthorizationCode 流程,应用程序将完美运行。

文档似乎也没有对此提供任何说明。

最佳答案

客户端已配置为授权代码流

Flow = Flows.AuthorizationCode

但是启动时的响应类型设置为混合流。

ResponseType = "code id_token"

尝试将其更改为

ResponseType = "code" (or Change the Flow type to Hybrid)

下面是ResponseType和对应Flow的列表enter image description here

关于asp.net-mvc - Identity Server 3 - 客户端应用程序未知或未授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37661338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com