我正在研究我的 SPA 和网络服务之间基于 token 的身份验证和授权。我在 Taiseer Joudeh 撰写的本主题中找到了很棒的文章并基于 this我开始构建我的基础设施。
资源和认证服务器是分开的。身份验证服务器有两个端点:
- http://dev.dilib.local/services/authentication/api/audience -- 我可以添加新的观众
- http://dev.dilib.local/services/authentication/oauth2/token -- 我可以生成 token
第一个工作正常,所以我可以注册新的观众。我对第二个有疑问。它总是返回 404。
public void ConfigureOAuth(IAppBuilder appBuilder)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
//only dev environment
//TODO
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/services/oauth2/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = new CustomOAuthProvider(),
AccessTokenFormat = new CustomJwtFormat("http://dev.dilib.local")
};
appBuilder.UseOAuthAuthorizationServer(OAuthServerOptions);
}
如您所见,它与 Taisser 在他的文章中所写的几乎相同。
到目前为止,为了找出它没有按预期工作的原因,我做了什么:
- 我仔细检查了我编写的代码,没问题
- 我四处搜索,有几个人遇到了这个问题,但答案只表明他们可以解决这个问题,没有人努力写下他/她所做的事情
- 我更改了几次 TokenEndpointPath 以避免它可能与我机器上运行的其他服务发生冲突,但是,我的机器上没有任何其他服务
- 我读到 OAuth 端点不完全是一个服务端点,我看到了一个代码片段,但整篇文章都是关于 CORS 的,我不想混合所有内容
- 我检查了 IIS 日志,除了特定的 POST 和 404 什么都没有
- 我检查了事件查看器,什么都没有
- 我在这里检查了相关问题,但没有
所以,我想不通了,我想我做了一些愚蠢的事情,我想请求你的帮助!
最佳答案
您提到 oauth2 token 端点 URI 如下所示,但您的代码片段并未说明这一点,因为代码似乎在您创建的“TokenEndpointPath”变量中缺少“authentication”字符串。我在下面粘贴了更正后的代码。我不确定您的问题是否这么简单:)
http://dev.dilib.local/services/authentication/oauth2/token
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
//only dev environment
//TODO
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/services/authentication/oauth2/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = new CustomOAuthProvider(),
AccessTokenFormat = new CustomJwtFormat("http://dev.dilib.local")
};
关于c# - OAuth 服务器 token 端点返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29448607/