问题标签 [identityserver2]
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.
api - 使用身份服务器对移动应用程序进行身份验证
向移动应用程序添加身份验证和授权的参考架构是什么。我是否需要访问令牌基础设施,或者我可以只使用私钥-公钥对来验证令牌数据。如果我还想发布开发人员 API,是否需要专用的身份服务器(如 wso2 身份服务器)。
提前致谢
更新 我尝试过的事情:我从事过一个项目,该项目对每个请求使用基于 PKI 的验证(令牌数据在客户端加密,令牌和加密数据随每个请求发送到服务器,服务器解密以验证客户端)这是一个自定义实现,我觉得这不是最好的方法,做了一些基础研究以找到正确的方法。发现 OpenAM 和 WSO2 IS,可以连接多个用户存储。它们支持基于令牌的身份验证和基于策略的访问控制以及其他功能。
我在这里寻找什么:我是否走在正确的轨道上,我是否应该继续评估这两种产品,因为我还想使用同一平台,同一应用程序的另一部分是基于 Web 的。
ruby-on-rails-4 - 如何将 Rails 客户端连接到 IndentityServer SSO 提供程序
在工作中,我们设置了一个运行 ThinkTecture IndentityServer SSO 提供程序的系统,该提供程序当前为多个 .NET 和 ColdFusion 站点提供身份验证。我目前正在开发一个我们在 Ruby on Rails 中支持的新站点,并且很难弄清楚如何将它连接到 SSO。(我对 Rails 很陌生,但长期从事 CF 和 .NET 开发)
我查看了omniauth-oauth2 和oauth2 gems,但我可以找到的文档和解释中似乎缺少重要部分。如果我想使用 Twitter、Facebook 或类似的东西进行身份验证,有大量信息,但我找不到任何只针对任何通用 OAuth2 提供程序的客户端的信息。
我只是在寻找可以为我指明正确方向的人,以查找有关如何执行此操作的信息。我不在乎它是特定于 IdentityServer 的,还是只是通用的,不管提供者如何。谢谢您的帮助。
更新:如您所知,我更喜欢使用 OAuth2 进行此连接,但我不反对使用 IdentityServer 提供的任何其他方式,包括 ADFS、WSFed 或 Simple HTTP。但是,我不能使用 OpenID,因为这些帐户特定于我们的系统,不能用于其他系统。
c# - 从 IdentityServer 资源范围获取声明
我无法让 IdentityServer 返回资源范围的任何声明。我将资源范围定义为:
然后将它们添加到集合中并交还。在我的 API Startup.cs 中,我将 owin 配置为:
我的 API 端点很简单:
在身份验证后从我的 UI 调用时,其输出是:
所以在 UI 上的初始登录是有效的(我看到角色在那里声明),检索令牌有效,并将令牌交给 API 有效。但是在将令牌交回 API 后,我看不到用户的角色。
我错过了什么?
asp.net-web-api - 如何使用带有 javascript 客户端的资源所有者流添加声明以从 IdentityServer3 获取访问令牌
我将资源所有者流程与 IdentityServer3 一起使用,并使用 javascript 中的用户名和密码将获取令牌请求发送到身份服务器令牌端点,如下所示:
访问令牌从身份服务器返回,用户通过身份验证。然后我使用这个令牌向我的 Web Api 发送请求。
问题是,当我检查是否为用户分配了角色时,我发现声明不存在。
这是客户端在身份服务器中的定义方式。
这就是定义用户的方式:
在这种情况下,如何向 access_token 添加声明?非常感谢!
iis-7.5 - HTTP 错误 500.19 - 内部服务器错误 - 错误代码 0x80070490 - IIS 7.5(适用于 Azure)
我正在 Azure 模拟器中执行我的代码。我构建的代码是 Thinktecture 的IdentityServer2。在模拟器开始运行并且一切准备就绪后,当我在浏览器中触发 URL 时出现错误。关于这个问题还有另一个 SO线程。但解决方案似乎不适用于我的Web.Config
- 没有 URL 重写模块规则
- IIS 管理器中的默认网站具有直通身份验证。这是什么 ?
- 完全控制用户访问 wwwroot。
- 虚拟文件夹>基本设置>连接身份>路径凭据具有直通身份验证
我还应该做什么?
网络配置
错误
笔记
修复尝试 1 不起作用。
angularjs - 如何处理路由中的额外哈希?(AngularJS 1.5 + 新/组件路由器)
我们正在尝试使用带有新组件路由器位的 Angular 1.5 构建应用程序。我们遇到了一些边缘情况,我们想知道是否有任何解决方法。
关键球员
- IdentityServer v2:我们的客户端目前将其用于 OAuth。它导致了这个问题的一部分。它是遗产,我们无法控制它的使用。
- AngularJS 1.5作为我们的前端框架。
- 我相信现在称为 ngComponentRouter的新角度路由器?我们认为这种风格可以帮助我们在 Angular v1.5 和 Angular v2 之间架起一座桥梁,并且很容易移植。
- oauth-ng作为我们的 OAuth 隐式流的包装器。
- 旧浏览器:从某种意义上说,我们必须支持 IE9+,这意味着我们不能使用 Angular 的 HTML5 模式。
目标
我们想要一个 URL,例如http://mysite/#!/auth/#auth_token=xyz123
(结构不受我们控制,例如无法删除第二个哈希)和:
- 将其放入实际的身份验证控制器
- 使 auth_token 值可用,通过参数或直接通过
$location
. (它目前在到达控制器之前已被擦洗)。
背景/问题
我们的客户有一个中央登录系统,他们在其中使用 IdentityServer v2。据我了解,当我们从 IdSrv v2 请求令牌时,它会通过附加#auth_token=xyz123
到您的重定向 URL 来响应。当它认为你有 时,它被写回来my.com/login.html
,从而导致login.html#auth_token=xyz123
.
但是,对于已经使用哈希的 Angular 应用程序,这会成为一个问题,因为 URL 以mysite.com/#/auth#auth_token=xyz123
.
正如你所料,这让 Angular 很生气。我们还没有找到一种方法让它在组件路由器下工作。
它如何与旧路由器一起工作
根据oauth-ng 文档,如果我们使用的是未启用 html5 的旧路由器,我们将执行以下操作:
我们尝试了什么
- 以类似的方式定义组件路由。这不起作用,因为
/access_token=:accessToken
包含一个=
,组件路由器似乎不允许这样做。 - 看看我们是否可以让 IdentityServer v2 改变响应的格式。似乎不可能;响应似乎被硬编码为
[URL we define]#auth_token=xyz123
. - 使用其他哈希等伪造 URL。通常会导致不良/不一致的行为。
我们认为我们的选择是什么
- 使用包罗万象/未找到的控制器。如果我们让路由一直下到
/**
,我们可以从 中检索令牌值$location
。不过,这有点恶心;我们想避免它。 - 找到一种将完整 URL 输入控制器的方法。我们可以捕获路由并将其传递给控制器,但此时 URL 不可用。
- 回到使用旧路由器或 ui-router(我们现在不想这样做)。
任何可以为我们指明正确方向的事情都将不胜感激!
asp.net-web-api - 企业环境中的 IdenityServer - 跨多个数据库解析用户信息
我们使用 IdentityServer3 作为我们的中央身份验证提供程序。现在我有一个关于企业环境中的 IdenityServer 的一般性问题。我试着用下面的例子来解释它:
- 如果用户成功通过身份验证,他会从提供者那里获得一个令牌。令牌包括用户的唯一 ID。
- 经过身份验证的用户向 WebApi 发送请求,以创建新项目(例如新产品)。
- WebApi 从令牌中提取唯一 ID 并在数据库中创建新产品。此外,新产品与唯一的用户 ID 相关联(例如,作为 creationUserId)。
- 另一个用户向 WebApi 发送请求以获取所有可用产品。
- WebApi 创建一个数据库查询来检索所有产品。此外,WebApi 想要将每个产品的 creationUserId 转换为相关的用户名。但这是不可能的,因为用户名存储在身份数据库中,身份数据库是与应用程序数据库不同的数据库(例如,用于产品)。是否有一些最佳实践来解决此要求?
非常感谢您的帮助!
问候
.net - OWIN / IdentityServer login stuck in endless loop
I have a working IdentityServer2 auth server that works fine. I am creating a new .NET MVC application and following this article (http://www.cloudidentity.com/blog/2014/02/20/ws-federation-in-microsoft-owin-componentsa-quick-start/) to set up MS OWIN with IDS2. I can reach the login screen but after logging in, the user is sent back to the calling website and gets stuck in an endless loop.
Startup.Auth.cs
Portion of web.config
Startup.cs
Redirect URL in IDS2
wcf-binding - IdentityServer 2 中的 WS-Trust MEX 端点为 GET 请求返回 HTTP 400
我们定制了 IdentityServer 2 以在 Azure AD 中提供身份联合功能(用于 Office 365 等)。这具有用于被动请求者流的 WS-Federation 端点和用于主动客户端的 WS-Trust。WS-Trust 的 MEX 端点应返回 WS-Trust SOAP 的 WSDL,以响应 POST(如 Lync 使用)和 GET(如 Windows 10 登录使用)。不幸的是,它返回 HTTP 400:ws-trust system.servicemodel.protocolexception “从网络接收的 XML 存在问题”。
System.ServiceModel.Security.WSTrustServiceHost 的一个实例被启动以处理对 WS-Trust 的调用,并处理其元数据。检查 WSTrustServiceHost ctor 中默认添加的 ServiceMetadataBehavior,我们可以看到它确实启用了通过 HTTP 和 HTTPS 进行 GET 的元数据。 http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Security/WSTrustServiceHost.cs,8c80389f2532b060,references
所以我有点困惑,为什么https://myhost.com/issue/wstrust/mex在使用 POST 时返回元数据,但在发送 GET 时返回 400。System.ServiceModel http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Channels/HttpPipeline.cs,b347567a68ab778c,references中的 EnqueueMessageAsyncResult.CompleteParseAndEnqueue() 中引发了异常
非常感谢任何帮助!
asp.net - 使用 Thinktecture Identityserver 2 作为声明提供者的 AD FS 3.0:事件 197 和 364
我们在从 AD FS 2.0 转换到 AD FS 3.0 时遇到问题。
我们有一个 ASP.NET MVC 应用程序,它通过 AD FS 使用联合身份验证。在我们的测试环境中,我们将 Thinktecture Identityserver 2 配置为 AD FS 中的声明提供程序。应用程序请求authenticationType="urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI"
. 作为参考,这里是我们 web.config 文件的整个标识部分:
我们目前正在使用 Windows Server 2008 R2 和 AD FS 2.0 的有些过时的服务器上运行,但它可以工作。我们最近设置了运行 Windows Server 2012 R2 和 AD FS 3.0 的服务器的新环境。我们已经在一个新服务器上安装了我们的 MVC 应用程序,并在另一个服务器上设置了 AD FS 3.0,配置类似于旧的 AD FS 2.0(据我们所知),MVC 应用程序作为依赖方,Thinktecture Identityserver 2 作为声明提供者。一个区别是我们现在在单独的服务器上使用 AD FS 代理,因为 AD FS 3.0 需要这个(而 AD FS 2.0 不需要)。事实上,我们有两个 AD FS 服务器,然后是负载均衡器后面的两个代理。Thinktecture Identityserver 2 仍在旧服务器上运行(在 Windows Server 2008 R2 上)。
这是问题所在:我浏览到应用程序的地址。我按预期被重定向到 AD FS,它立即将我重定向到 Thinktecture Identityserver 2。到目前为止一切都很好。我使用用户名(“Anders”)和密码登录,然后被重定向回 AD FS。在这里,我得到一个一般错误页面,上面写着“发生错误”。在 AD FS 服务器上的事件日志中(负载均衡器显然总是将我引导到同一个节点,这恰好是主节点)我发现两个错误和一个警告。第一个错误:
然后是警告:
然后是第二个错误:
我已在此页面上阅读了有关 AD FS 中支持的 SAML 身份验证类型的信息:https ://msdn.microsoft.com/en-us/library/hh599318.aspx 。SmartcardPKI未在此处列出。(但请注意,该文档适用于 AD FS 2.0。)
在 AD FS 服务器(旧的和新的)上,我尝试使用以下 PowerShell 命令列出支持的 AuthenticationType:
在旧服务器和新服务器上都输出:
urn:oasis:names:tc:SAML:2.0:ac:classes:Password
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient
urn:oasis:names:tc:SAML:2.0:ac:classes:X509
urn:federation:authentication:windows
urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos
这里也没有SmartcardPKI。无论如何,它在旧环境中的工作量更少。
我还尝试使用PasswordProtectedTransport代替SmartcardPKI(通过编辑 MVC 应用程序的 web.config)。结果完全一样,只是现在第一条错误消息说:
任何关于我下一步应该尝试什么的指示都将非常受欢迎。也许 AD FS 2.0 和 3.0 之间存在差异,需要我对 Thinktecture IdentityServer 2 进行配置更改?