【发布时间】:2016-01-03 06:25:01
【问题描述】:
我有一个 JS 网站,它试图通过传递用户名和密码来获取访问令牌。我还维护身份验证服务器,因此我认为 JS 客户端是受信任的。我可以用 ASP.net 4.5.x 做到这一点。但是当我尝试对 IdentityServer 做同样的事情时,我得到了 invalid_client。
我现在正在试用 ASP.net 5,并且我相信不再支持用作身份提供者的旧 OWIN 中间件,并且当我们想成为身份提供者时,他们正在提倡 IdentityServer。
POST /connect/token HTTP/1.1
Host: localhost:59766
Content-Type: application/x-www-form-urlencoded
username=admin&password=pw&grant_type=password
我认为 IdentityServer 首先需要客户端信息,但这意味着我必须在网页(或本机移动应用程序)上公开 client_secret,我认为根据 OAuth 规范这是不允许的。
我们如何使用 IdentityServer 关闭客户端需求?
在 IdentityServer 的 github 上,我只看到 C# 代码收集客户端凭据以及用户名和密码以获取资源所有者凭据流 here 的访问令牌。什么是等效的原始 HTTP 请求?
我个人不在乎是否有其他应用试图冒充我的客户。无论如何,实际上是用户的凭据才允许访问任何内容。
【问题讨论】:
-
注意:如果您正在 ASP.NET 5 中寻找 OAuthAuthorizationServerMiddleware 的等效项(OWIN/Katana/Web API 中的 OAuth2 授权服务器),您可以试试 AspNet.Security.OpenIdConnect.Server: stackoverflow.com/questions/30768015/…。它支持您尝试实现的确切场景,无需客户端身份验证。
-
我试过了,但我似乎无法让令牌生成器编写 JWT 的第三部分。我会在以后的问题中问这个问题。
标签: asp.net-web-api asp.net-core asp.net-core-mvc thinktecture-ident-server identityserver3