在没有浏览器的情况下将 OpenID 与 WCF 一起使用,可能吗?

2023-11-22

从我对 OpenID 的大部分阅读来看,似乎可能需要浏览器。我正在编写一个 WCF 应用程序,并希望使用 OpenID 作为身份验证方法,但我的应用程序不是 Web 应用程序。是否可以在不需要 Web 浏览器的情况下一起使用 WCF 和 OpenID?


虽然 OpenID 可以在其规范中宣传其独立于 cookie 等,因为规范实际上并没有规定如何使用这些东西,但实际上,除了登录网站之外,我从未见过一个好的 OpenID 解决方案,这实际上是它的功能主要用例。

然而,有一个很好的方法仍然使用 WCF 和 OpenID。将 OAuth 添加到其中。这DotNetOpenAuth库有一个示例,展示了 WCF 客户端如何获得授权以通过 OAuth 调用 WCF 服务,其中在服务端,用户使用 OpenID 登录作为授权过程的一部分。

因此,基本上,如果您的 WCF 应用程序需要“登录”才能调用 WCF 服务,作为一次性设置的一部分:

  1. 应用程序会弹出一个浏览器,用户可以在其中看到 WCF 服务网站(OAuth 服务提供商)
  2. 用户使用其 OpenID 登录(尽管用户可能已经登录,在这种情况下他们可以跳过此步骤)
  3. OAuth SP 询问用户“您想要授权此 [wcf 应用] 访问此站点吗?”
  4. 用户说是,然后关闭浏览器。
  5. 借助 OAuth 协议,WCF 应用程序现在可以访问 WCF 服务。

这是有效的,因为在幕后,当用户通过 Web 浏览器对服务说“是”时,会向 WCF 应用程序分配一个特殊的机器友好凭据,它与每个 WCF 服务调用类似的方式使用用户名/密码将是。

查看 DotNetOpenAuth 库。它包含示例以及使其正常工作所需的一切。

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

在没有浏览器的情况下将 OpenID 与 WCF 一起使用,可能吗? 的相关文章

  • 从 Angular 2 和 Silverlight 应用程序使用相同的 WCF 服务

    目前 我们有一个带有 WCF 服务 后端 的 Silverlight 应用程序 前端 现在 我们将用 Angular 2 应用程序替换 Silverlight 应用程序 而不更改 WCF 服务 只有 UI 会发生变化 在开始使用 Angul
  • 对于可以作为服务或控制台应用程序运行的应用程序,可接受的模式是什么

    我有一个作为 Windows 服务部署到生产环境的项目 但是 出于本地开发目的 将其作为控制台应用程序运行会很有用 目前我有一堂课叫ReportingHost它提供了我的核心功能 还有一个名为 ReportingServiceHost 的类
  • MSMQ,消息被放入队列并消失,但从未被服务合约拾取

    我有一个本地私人队列 我还在 MVC 应用程序内有一个 WCF 服务 它使用 msmqIntegrationBinding 侦听队列 问题是 当消息排队时 服务契约永远不会被调用 但消息很快就会消失 该消息不在有害队列中 这是我声明与队列的
  • 使用 Web 部署在 IIS Express 上发布 WCF 服务应用程序

    我想在 IIS Express 上发布在 Visual Studio 2010 中创建的 WCF 服务应用程序 所以我使用项目 gt 发布 gt Web 部署 Service URL http localhost Site applicat
  • WCF:如何诊断故障通道?

    我正在为我的实验室进行一项更改 希望能够帮助诊断我们所看到的一些奇怪的通道故障现象 有一个测试应用程序使用 DuplexChannelFactory 连接到几个 Windows 服务 并且由于某种原因 该测试应用程序上的通道似乎出现了很多故
  • WCF 包装代理客户端

    我的项目中有许多在客户端应用程序中使用的 Web 方法 我不想写这样的代码 using ServiceClient sc new ServiceClient Invoke service methods sc Method1 相反 我想写
  • App.config 之外的 WCF ChannelFactory 配置?

    我有一个使用插件系统的 Windows 服务 我在插件基类中使用以下代码为每个 DLL 提供单独的配置 因此它将从plugin dll config string dllPath Assembly GetCallingAssembly Lo
  • 使用 wsHttpBinding 时,为什么 InstanceContextMode.PerSession 的行为类似于 PerCall?

    我有 AJAX 客户端使用 SOAP 1 2 使用的 WCF 服务 网页配置
  • RESTful WCF 的最低配置

    为了让 WCF 与 REST 一起工作 我至少需要在 web config 中放入什么 我已经用 WebGet 注释了我的方法 但他们没有收到消息 我发现您可以将以下内容添加到 svc 文件中的 ServiceHost 指令中 它会自动为您
  • WCF Xml 与二进制序列化的优缺点

    我知道如果我将二进制序列化与 WCF 一起使用 我就会失去互操作性 如果我愿意接受这一点 我想知道使用二进制比 Xml 是否有效率优势 如果还有我上面没有提到的其他优点和缺点 是的 可能是一个大事件 XML 序列化数据比二进制数据要大 使用
  • 工作组模式下 WCF MSMQ 的配置

    在尝试部署服务时 我发现它无法启动 因为 MSMQ 处于工作组模式 我创建了一个专用队列 并更改了配置文件以引用它 但 WCF 服务主机拒绝以以下消息启动 绑定验证失败 因为绑定的 MsmqAuthenticationMode 属性设置为
  • 通过 https 负载均衡器的 WCF http 服务

    我有一个可以通过 http 端点访问的 WCF Web 服务 现在 该服务应通过 https 与负载均衡器一起发布 客户端是通过 svcutil exe 在 Net 中创建的 但 Java 客户端也需要 WSDL 我的理解是 Web 服务在
  • 使用 WCF 的契约优先 SOA

    这个问题更多的是探索人们在社区中 在实际情况中所做的事情 而不是一个有针对性的问题 我对此进行了相当广泛的搜索 虽然我发现很多博主都提倡契约优先的服务设计 并且有一些评论支持它们 但我还没有找到很多关于使用 WCF 实现契约优先的实用信息
  • WCF 未在 IIS 6.0 下运行

    尝试让我的 WCF 服务在 IIS 6 下运行 我已经创建了 svc and aspnet isapi dll映射根据 http msdn microsoft com en us library ms752241 aspx http msd
  • 错误:在 Visual Studio 2013 中找不到类型或命名空间名称“ApplicationUser”

    我正在学习 RESTful WCF 服务 教程 但是当我构建我的应用程序时 我收到此错误 找不到类型或命名空间名称 ApplicationUser 您是否缺少 using 指令或程序集引用 c users basma documents v
  • 服务具有零个应用程序(非基础设施)端点

    我最近创建了一个WCF服务 dll 和一个服务主机 exe 我知道我的 WCF 服务工作正常 因为我能够成功地将服务添加到 WcfTestClient 但是 当我从服务主机 exe 使用 WCF 时 我似乎遇到了问题 我可以将对 WCF d
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • WCF MaxReceivedMessageSize 属性未采用

    搜索了一下 没有运气 我不断得到 已超出传入消息的最大消息大小配额 65536 要增加配额 请使用相应绑定元素上的 MaxReceivedMessageSize 属性 这是有道理的 所以我进入服务器和客户端配置并进行更改 Client
  • SVCUtil“更新服务参考”等效命令参数

    我想使用 SVCUtil 更新 Visual Studio 2010 解决方案中的服务引用 因为该解决方案有多个项目 并且一一刷新引用并不好 我想知道您的观点 因为我必须确保执行与 Visual Studio 2010 执行的命令完全相同的
  • 以编程方式获取命名管道的系统名称

    我正在使用 WCF NetNamedPipeBinding 编写进程间通信 我的目标是让服务在 net pipe localhost service 上运行 所以我运行最简单的主机 host new ServiceHost contract

随机推荐

  • AES/CBC 真的需要 IV 参数吗?

    我正在编写一个简单的应用程序来使用 AES CBC 模式 加密我的消息 据我了解 CBC 模式需要 IV 参数 但我不知道为什么我的代码在不使用 IV 参数的情况下工作 任何人都可以解释为什么吗 谢谢 加密消息无一例外地打印 T9KdWxV
  • 释放-获取的传递性

    正当我以为我已经掌握了原子知识时 我看到了另一篇文章 这是摘录自GCC wiki under 总体总结 Thread 1 Thread 2 Thread 3 y store 20 if x load 10 if y load 10 x st
  • node.js,捕获错误以便脚本不会中断?

    我有一个 node js 脚本 每当发生错误时 node js 都会因发生的错误而停止运行 检查 Node js 中的错误的正确方法是什么 这样它就不会破坏脚本并导致 Node js 停止 您可以通过设置以下内容来捕获其他未捕获的错误 pr
  • 数据包加密在Chef服务器上加密,但是如何加密本地副本呢?

    我在私有 git 存储库中拥有完整的 Chef 配置集 包括角色 食谱 数据包等 我发现当数据包上传到 Chef 服务器时 我可以使用 secret file 选项对其进行加密 但我也想将这些数据包加密存储在 git 存储库中 唯一想到的就
  • Django 开发服务器和 MIME 类型

    是否有在 django 开发服务器中设置 MIME 类型 具体来说 我希望从 Chrome 开发工具的警告中删除此消息 Resource interpreted as Image but transferred with MIME type
  • % 在 like 子句的开头

    我听说由于性能原因 不建议在 SQL Server 中的 LIKE 子句开头使用 为什么会这样呢 有关此问题的更多详细信息将帮助我了解此问题的影响 A 在一个的开始LIKE子句意味着索引完全没有用 如果有静态文本将图案锚定在 至少可以从索引
  • 在批处理文件中,如何判断进程是否正在运行?

    我想编写一个批处理文件来检查进程是否正在运行 如果正在运行 则执行一个操作 如果没有 则执行另一个操作 我知道我可以使用任务列表列出所有正在运行的进程 但是有没有更简单的方法来直接检查特定进程 看起来这应该可行 但事实并非如此 taskli
  • 找到穿过迷宫的所有可能路径

    我正在尝试创建一个程序 该程序将遍历一个随机生成的迷宫 其中 1 是开放的 0 是墙壁 从左上角开始 到右下角结束 路径可以向上 向下 向左 向右 目前 我的程序为我提供了一种解决方案 但我无法让它打印多个路径 我已经阅读了这个问题的几个不
  • 如何使用 Apache Velocity 进行 XML 转义?

    我正在使用 Apache Velocity 生成 XML XML 转义输出的最佳 最直接 方法是什么 我看到有一个转义工具 但无法弄清楚它的开发状态 我还认为 XML 转义很可能是由 Velocity 直接支持的 看一眼事件处理程序 eve
  • IOS 关闭/显示键盘而不放弃第一响应者

    我的应用程序与通过蓝牙连接的条形码扫描仪一起使用 连接扫描仪后 您可以双击扫描仪上的按钮来关闭 显示屏幕键盘 90 的情况下 用户会希望隐藏键盘 因为他们将扫描条形码来输入数据 我提前知道有一些例外情况需要启用键盘 我想省去他们按扫描仪按钮
  • 可能使用三元运算符表达条件 HAML

    尝试想出一种更紧凑的方式在 HAML 和 Ruby 中表达这个条件 也许使用三元运算符 if page nil br nothing yet else br page name 寻找类似的方法有条件地测试是否在 HAML 模板中添加类的巧妙
  • 如何使用 grep 跨多行查找模式?

    我想找到按顺序包含 abc 和 efg 的文件 并且这两个字符串位于该文件中的不同行 例如 一个包含内容的文件 blah blah blah blah blah abc blah blah blah blah blah blah blah
  • qTip 问题 - 提示未显示,因为元素在脚本之后加载

    我对 javascript jQuery 或其插件不太有经验 但通常我都能应付 无论如何 我的客户正在构建一个网站 其目的之一是从不同网站获取新闻文章并在无序 html 列表中显示标题 我无法访问他的代码 新闻文章加载速度相当慢 在网站加载
  • EmberJS - 具有 hasMany 关系的记录无法加载

    我正在使用 EmberJS 1 0 0 和 Ember Data 1 0 0 beta 以及最新版本的本地存储适配器 当我尝试从商店加载具有 hasMany 关系的记录时 出现以下错误 ember 1 0 0 js 第 394 行 断言失败
  • Tabhost-设置 Android 标签中的徽章位置

    我对徽章的概念很陌生 在我的应用程序中 我想在一个选项卡上显示徽章 为此 我使用了 android viewbadger jar 文件Android ViewBadger它在 4 个选项卡上工作正常 TabWidget tabs TabWi
  • Android:如何禁用列表创建时的列表项

    我对 Android 开发还很陌生 仍然在做很多事情 我有一个使用以下代码显示的主菜单 但无法弄清楚如何禁用菜单中的选定项目 有人可以帮我一些示例代码吗 public class listTest extends ListActivity
  • 如何通过 C# 中的 Selenium 伪造/模拟 ChromeDriver 中的地理位置?

    如何通过 C 中的 Selenium 伪造 模拟 ChromeDriver 中的地理位置 我只提供了 Python 和 Java 的示例 但我无法将代码 翻译 为 C 因为所使用的函数不存在 这是我想要做的示例图像 官方说好像还不支持 ht
  • Github:克隆我的私人存储库时出错

    我尝试使用 https URL 克隆我的 GitHub 项目 但失败并出现错误 git clone https email protected foo foo private git Cloning into foo private Pas
  • Laravel 4 中的包控制器

    我想在 Laravel 4 包中添加控制器 但我无法让路由正常工作 我已按照 Laravel 4 文档中的包说明进行操作 并获得了适用于非控制器路由的routes php 文件 有人可以给我一些关于如何让包控制器在 Laravel 4 中工
  • 在没有浏览器的情况下将 OpenID 与 WCF 一起使用,可能吗?

    从我对 OpenID 的大部分阅读来看 似乎可能需要浏览器 我正在编写一个 WCF 应用程序 并希望使用 OpenID 作为身份验证方法 但我的应用程序不是 Web 应用程序 是否可以在不需要 Web 浏览器的情况下一起使用 WCF 和 O