问题标签 [identity-delegation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 从 bootstraptoken 获取新的 ADFS 令牌以登录 Office 365
我正在尝试实现这种情况(我正在用 C# 开发 SharePoint Web 部件,服务器端):
即,我的目标是使用尚未确定的 API(EWS 或别的)。
SharePoint(本地)和 Exchange Online 都连接到同一个 ADFS。
第一步是从 ADFS 获取一个新令牌(然后我将从 Office 365 获取另一个来自 ADFS 提供的令牌,然后我将使用 O365 令牌调用 Exchange Online API...除非我'我错了吗?)。
总之,我想根据当前连接使用的“bootstraptoken”为当前用户获取一个新令牌。
这是我的初始代码:
这失败channel.Issue
了:
签名令牌 System.IdentityModel.Tokens.SamlSecurityToken 没有密钥。安全令牌用于需要它执行加密操作的上下文中,但令牌不包含加密密钥。令牌类型不支持加密操作,或者特定令牌实例不包含加密密钥。检查您的配置以确保未在需要加密操作(例如,背书支持令牌)的上下文中指定加密禁用的令牌类型(例如,UserNameSecurityToken)。
然后我遵循了 Travis Spencer 的建议。我最终得到了该代码:
但现在它失败了:
从另一方收到不安全或不正确安全的故障。有关故障代码和详细信息,请参阅内部 FaultException。
和内部消息:
处理消息中的安全令牌时发生错误。
接下来我可以尝试什么?
当用户已经通过我的 ADFS 登录时,如何获取新令牌以访问 Office 365?
security - Openid Connect 不记名令牌共享与减少的特权集
据我了解,在应用程序 A 获得不记名令牌后,它可以与客户端 B 共享它。但是如果客户端 A 想要共享令牌,而委托给它的权限集却减少了怎么办。
例如:我有一个托管统计信息的服务器(我们称之为 S),它有 OAuth2 API。还有报告服务器(我们称之为R)。
客户端 (C) 登录到 S 并使用统计信息进行一些操作。C 只能与他拥有的统计数据交互。C 还想查看来自 R 的报告: C -- 获取报告 --> R -- 获取统计信息 --> S -- 统计信息 --> R -- 报告 --> C
- 我不想为报表服务器授予完全访问权限(根本没有授权),因为用户可以添加自己的报表,这可能会意外损坏或查看其他用户的统计信息;
- 我不想将 A 发出的不记名令牌提供给报表服务器,因为报表可能会意外损坏 A 拥有的统计信息。A 可以读写,但 R 只需要查看数据。
我正在寻找一种以对最终用户透明的方式将减少的权限集委派给服务器 R 的方法(无需额外的用户名和密码或/和确认请求)。
这是否适合 OpenID 概念,或者我应该在 OAuth2 的顶部实现我自己的协议?也许还有其他解决方案?
oauth-2.0 - 联合与委托,OAuth 与 OpenID Connect 与 SAML
我试图了解联合身份验证和委托身份验证之间的区别,但我越来越困惑。
我们是否始终使用 SAML 协议进行联合身份验证?或者是什么?
两种身份验证方法都可以使用 OpenID Connect(或 OAuth)吗?
我们是否需要在两个域之间建立受信任的连接才能进行委托或联合身份验证?
我们是否总是对合作伙伴使用 SAML,对客户使用 OpenID Connect(或 OAuth)?
如果有人解释两个域(合作伙伴和企业)之间这两种身份验证方法的不同步骤,我将不胜感激。