mvc 和 webapi 之间的身份验证(单独的域/应用程序)

2023-12-31

我正在为以下场景寻找好的想法/资源/实现

MVC 网站位于http://mywebsite.com http://mywebsite.com

Webapi REST 服务位于http://myapi.com http://myapi.com

重要信息 - 请注意单独的域/应用程序..

用户登录网站并通过 JSONP/CORS 从 API 获取数据

显然我不希望用户使用基本身份验证在 Web api 上进行身份验证。但API也暴露给Android/IOS应用程序,所以我需要基本的身份验证

我考虑过从 MVC 站点返回一个令牌,然后在 webapi 站点上编写一个 DelegatingHandler 来使用该令牌进行身份验证,但我想要一些输入,或者甚至更好的解决方案

我专门为这个场合制作了一个漂亮的图表:


虽然 JSONP 也可以工作,但也可以考虑使用CORS http://en.wikipedia.org/wiki/Cross-origin_resource_sharingWebApi 实现的一些示例here https://stackoverflow.com/questions/12732147/cors-with-webapi-for-xmlhttprequest.

考虑遵循您的代币标准(至少是草案),而不是创建自己的标准。 Json Web Token (JWT) 似乎是规范的一个好方法here http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html包括格式并确定加密或签名方法。有一些库支持这种令牌,例如思维架构身份模型 https://github.com/thinktecture/Thinktecture.IdentityModel.40 本文 http://leastprivilege.com/2012/05/25/json-web-token-jwt-support-in-thinktecture-identitymodel/涵盖了该库和 JWT 的一些用法。谷歌有一个很好的开发指南here https://developers.google.com/accounts/docs/OAuth2ServiceAccount.

免责声明,仅在阅读了一些 OAuth 和 JWT 标准化后才考虑上述内容批评 http://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/.

如果您确实使用了 HTTP 标头,我不确定您是否需要自定义标头 https://stackoverflow.com/questions/7802116/custom-http-authorization-header(@Vipul)“授权:”标头就是用于此类信息的。

如果您使用自定义令牌,请确保它有到期日期,请考虑使用nonce http://en.wikipedia.org/wiki/Cryptographic_nonce如果您想防止重放攻击并使用众所周知的算法进行签名或加密。

同意你的观点委托处理程序 http://codebetter.com/johnvpetersen/2012/04/04/moving-from-action-filters-to-message-handlers/是放置令牌验证的好地方。 ActionFilter的调用方式很多晚于堆栈中所需的时间 http://blogs.msdn.com/b/kiranchalla/archive/2012/05/06/asp-net-mvc4-web-api-stack-diagram-currently-in-development.aspx中间立场是实施System.Web.Http.AuthorizeAttribute http://www.codeproject.com/Tips/376810/ASP-NET-WEB-API-Custom-Authorize-and-Exception-Han.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mvc 和 webapi 之间的身份验证(单独的域/应用程序) 的相关文章

随机推荐

  • Spark中字符串类型的汇总统计

    Spark 中是否有像 R 中那样的汇总函数 Spark MultivariateStatisticalSummary 附带的汇总计算仅适用于数字类型 我有兴趣获取字符串类型的结果 例如前四个最大出现的字符串 groupby 类型的操作 唯
  • 可以在 Typescript 中向 Promise 添加取消方法吗?

    我想创建一个 QueryPromise 它只是一个带有取消方法的具体承诺 下面是它的使用方法 function runQuery text string QueryPromise return new QueryPromise resolv
  • Spring OAUTH:覆盖 CheckTokenEndpoint 'check_token?token=' 响应映射

    我想重写 CheckTokenEndpoint 以将我自己的自定义输出作为 Map 提供给资源服务器 我已尝试以下操作 但不起作用 为 oauth check token 引入新的自定义控制器 但 Spring 拒绝此自定义并注册自己的控制
  • 将 PagedList 与 ViewModel ASP.Net MVC 结合使用

    我正在尝试在 ASP Net 应用程序中使用 PagedList 我在 Microsoft 网站上找到了这个示例http www asp net mvc tutorials getting started with ef using mvc
  • 我的日志消息不会通过 proguard 配置被删除

    我正在开发我的 Android 应用程序 然后我通过以下方式启用并配置混淆器 步骤1 启用proguard In 项目 属性 I have proguard config sdk dir tools proguard proguard an
  • 使用 R,将可变行数的文本合并到单个文本元素中

    什么样的 R 代码可以将下面的模拟数据框中每个人的叙述条目合并到一个变量中 数据来自 Excel 电子表格 其中记录的叙述条目可以有 1 到 8 行 每个计时员的记录都以空行结束 假设这个数据框 dput 如下 gt df timekeep
  • 提前终止工作人员 puma 日志意味着什么?为什么会发生这种情况?

    对于我的 Elastic Beanstalk 实例 我得到了504每当我访问它时状态代码响应 当我跟踪日志时 我在 puma 应用服务器上看到以下日志 gt var log puma puma log lt 27240 Early term
  • 在 PL/SQL 中将 varchar2 转换为日期 ('MM/DD/YYYY')

    我需要将字符串从 varchar 转换为 MM DD YYYY 格式的日期 我的输入字符串是 4 9 2013 我的预期输出是 04 09 2013 即 2 位月份 2 位日期和 4 位年份 以 分隔 我有以下数据 DOJ varchar2
  • 为什么提供静态文件不安全

    这可能是一个愚蠢的问题 并且有一个明显的答案 但我正在测试 404 和 500 错误处理程序 这意味着我必须将 debug 切换为 False 我进入 Django 管理页面 注意到没有提供静态文件 我知道它们应该通过 Apache 路由
  • iOS 7.1 滑动解锁文字动画

    我不确定以前是否有人问过这个问题 但我很难找到它 也许我没有使用正确的搜索词 所以如果答案已经存在 如果有人能指出我正确的方向 我将不胜感激 我刚刚注意到 随着 iOS 7 1 的更新 锁屏 滑动解锁 文本上的闪烁动画发生了变化 聚光灯现在
  • 什么时候编写“ad hoc sql”与存储过程更好[重复]

    这个问题在这里已经有答案了 我的应用程序中有 100 的即席 SQL 我的一个朋友建议我转换为存储过程以获得额外的性能和安全性 这在我脑海中提出了一个问题 除了速度和安全性之外 还有其他理由坚持使用即席 SQL 查询吗 SQL Server
  • 将 Camunda 嵌入现有 Java 应用程序

    我已经提取了 Camunda 最新映像并在它自己的 docker 容器中运行 Camunda 我有一个 dmn 上传到 Camunda Cockpit 并且我能够进行 Rest 调用以从我上传到 Camunda Cockpit 的决策表中获
  • 错误:访问属性“处理程序”的权限被拒绝

    我有一个 Firefox 的 Greasemonkey 脚本 昨天运行得很好 我今天尝试使用它 没有修改代码 我注意到它停止工作 经过进一步检查 脚本现在抛出以下错误 Error Permission denied to access pr
  • 我可以将 cperl 模式与 perl 模式着色一起使用吗?

    Emacs cperl 模式似乎比 perl 模式更容易混淆 但彩虹糖效应使该东西对我来说无法使用 有谁知道或知道 emacs 块的示例 该示例使 cperl mode 使用 perl mode 的着色 理想情况下以一种足够可读的形式 以便
  • 寻找适合企业网站的轻文本富编辑器,比tinymce更轻,带有用于评论表单的基本按钮

    我正在寻找适合企业网站的轻文本富编辑器 比tinymce更轻 带有用于评论表单的基本按钮 重要的是编辑器也可以在 IE6 中运行 到目前为止 我尝试使用 cleditor 15KB 但当按 enter 键时 IE 出现问题 客户有问题 Jq
  • EmberJS 使用 HasMany 取消(回滚)对象

    假设我有一个 ParentObjecthasMany项目 我想在我的应用程序中实现取消功能Add将回滚所有内容的路线 简而言之 我有 父对象IsNew and IsDirty 并且有可能 项目 也将是IsNew and IsDirty 所以
  • 使用 like 关键字在单个查询中匹配多个标题

    使用 like 关键字在单个查询中匹配多个标题 我正在尝试获取与给定标题匹配的所有记录 下面是数据库的结构请参阅 数据库截图 https prnt sc JduJ6NSIr1E 当我传递单个类似查询时 它返回数据 Query SELECT
  • 聚焦离子输入时有没有办法隐藏键盘?

    我想要一个可以聚焦的离子输入 并且键盘不应该出现 有什么办法或者有可能吗 谢谢你 是的 安装这个插件 gt https ionicframework com docs native keyboard https ionicframework
  • 在Scheme中注释代码

    我正在查看一些代码Scheme from Festival并且似乎无法弄清楚评论 目前 我可以看到 and 用于指示注释行 网络上的其他来源表明上面的一些可能是指示多行注释的方法 我的问题是 有什么区别 and 用于发表评论 什么时候应该使
  • mvc 和 webapi 之间的身份验证(单独的域/应用程序)

    我正在为以下场景寻找好的想法 资源 实现 MVC 网站位于http mywebsite com http mywebsite com Webapi REST 服务位于http myapi com http myapi com 重要信息 请注