【发布时间】:2017-07-12 10:23:44
【问题描述】:
我正在构建一个 MVC Web 应用程序,它使用 openID Connect 混合流向 Identity Server 3 进行身份验证。MVC Web 应用程序包含用于从 een ApiController 获取异步 JSON 数据的 jQuery 脚本。该 ApiController 是同一个 MVC Web 应用程序的一部分。
我不希望每个人都能从 API 访问数据,所以我也想保护 API。我向 ApiController 添加了一个 [authorize] 属性。当使用 JQuery ajax 请求请求 API 时,我收到以下错误消息:
XMLHttpRequest 无法加载 https://localhost:44371/identity/connect/authorize?....etc。 对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:13079” 使用权。响应的 HTTP 状态代码为 405。
但是,当我直接在浏览器中向 API 方法发出请求时,我会被正确重定向到 Identity Server 的登录页面..
那么,这里到底有什么问题?我读到了一些关于不允许通过“后通道”请求/授权端点的内容,但我不明白“前通道”和“后通道”之间有什么区别。是否有可能我混淆了错误的 OAuth 流程?混合流可能不是正确的吗?
我还发现 API 通常是一个单独的应用程序,但构建一个单独的 API 应用程序(例如需要不记名令牌)是否总是必要/最佳实践?
请为我指明正确的方向。
【问题讨论】:
标签: asp.net-web-api identityserver3