我正在实现一项用户服务,该服务将用户信息存储在 Azure 表存储中。我想使用租户 ID 的值作为分区键的一部分,但是 GetProfileDataAsync 和 IsActiveAsync 中可用的声明只有 5 个内置声明(sub、name、amr、idp、auth_time)。
我从身份提供商处获取租户 ID,并将其作为声明包含在我的访问令牌和身份令牌中。我怎样才能使其可供这些方法使用?
我有几个使用 openid 连接授权代码流的 Web 应用程序客户端,每个应用程序都有不同的客户端密钥和密钥。我想与我所有的网络应用程序共享 ID 令牌,换句话说,创建一个会话,以便使用浏览器的用户可以使用任何网络应用程序而无需再次进行身份验证。
我计划将构成会话一部分的所有 Web 应用程序的客户端 ID 添加到 aud(受众)中。
这有什么问题吗?
每个 Web 应用程序都可以使用 id 令牌请求访问令牌吗?
我正在使用 oidc-client-js 库与 IdentityServer3 一起工作,它运行良好,但每次 oidc-client-js 尝试更新令牌时我无法设置自动“无声令牌更新”我在控制台中收到错误
拒绝在框架中显示“ https://identity.blablabla.com/core/connect/authorize?client_id= ...”,因为它将“X-Frame-Options”设置为“sameorigin”。
我用于测试来自 oidc github 的 angular2 应用程序,在应用程序尝试更新令牌的那一刻有错误的屏幕截图 在 此处输入图像描述
我知道这是身份服务器安全性的一部分,以防止在 iframe 中打开其页面,但在这种情况下,oidc-client-js 无法使用IdentityServer3进行静默令牌更新。可能有人有这个问题的经验,可以帮助解决它?
我试图通过身份服务器让我的脑袋脱离云端.
我想实现身份服务器项目以进行身份验证
在这篇博文中,我已经阅读了一些关于客户的细节.作者简单地说:
OAuth 2为不同的用例提供了几种"授权类型".定义的授权类型是:
- 在Web服务器上运行的应用程序的授权代码
- 隐含于基于浏览器或移动应用程序
- 使用用户名和密码登录的密码
- 应用程序访问的客户端凭据
授权码和隐式之间有什么区别?这是否意味着隐式应该用于例如javascript代码?
说我需要:
另外一个问题,我想基于Bearer Token和简单的apiKey在我的web api中实现授权.这两种类型都可以融合吗?如何使用Identity Server实现apiKey?
非常感谢,如果这些都是愚蠢的问题,请原谅.
authorization oauth-2.0 thinktecture-ident-server identityserver3 identityserver4
我正在关注使用OAuth来保护Pluralsight上的ASP.NET API课程.我已经使用许多InMemoryUsers设置了IdentityServer,其中一个看起来像这样......
public static List<InMemoryUser> Get()
{
return new List<InMemoryUser>
{
new InMemoryUser
{
Username = "user@domain.com",
Password = "password",
Subject = "user@domain.com",
Claims = new[]
{
new Claim(Constants.ClaimTypes.Id, "96cddc1de66641829237b7f09869b1c8"),
new Claim(Constants.ClaimTypes.Name, "Some Full name example
}
},
};
}
Run Code Online (Sandbox Code Playgroud)
如果我授权用户并使用提供的访问令牌来调用API,则该用户的声明集合看起来像这样......
((User as System.Security.Claims.ClaimsPrincipal).Identities.First() as System.Security.Claims.ClaimsIdentity).Claims.ToList()
Count = 10
[0]: {iss: https://localhost:44375}
[1]: {aud: https://localhost:44375/resources}
[2]: {exp: 1468920204}
[3]: {nbf: 1468916604}
[4]: {client_id: my_clientid}
[5]: {scope: openid}
[6]: {http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier: user@domain.com}
[7]: {http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationinstant: 1468916604}
[8]: {http://schemas.microsoft.com/identity/claims/identityprovider: …Run Code Online (Sandbox Code Playgroud) 我想问一个问题,以确认我对如何使用范围和声明(角色)的理解.假设我有一个用户(具有只读权限的用户A,即适合的只读角色),Windows服务(具有只读访问权限的客户端A),MVC站点(具有完全访问权限的客户端B)和Web API.我希望具有完全访问权限和只读访问权限的用户和客户端访问Web API.
当客户端A连接到Web API时,它会传递一个包含Scope"sampleApi.read_only"的访问令牌,我可以使用[ScopeAuthorize("sampleApi.full)]或ScopeAuthorize("sampleApi.full,sampleApi.read_only")]用于微调可访问性的类和方法.没问题.
但是,当用户A登录时,他/她"继承"客户端B的范围.因此,访问令牌包含"sampleApi.full","sampleApi.read_only"和角色"read_only".
现在我在WebApi遇到了一个问题,我需要在被用户调用时采取不同的行动.在这种情况下,我忽略了范围并使用他/她的角色,用户获得"read_only"访问权限,这就是我想要的.
这是正确的,使用ScopeAuthorize属性不再有意义,我需要一个自定义混合属性来执行某些操作:
如果调用者是用户 - 然后使用角色来确定可访问性,则使用范围来确定可访问性
还是我完全被误解了?
我只想为我的应用程序和身份服务器3进行简单的单点登录,这被认为是一个很好的解决方案.通过同意页面,注销和退出页面,我不喜欢它的三件事.我设法通过将这些行设置为Clients.cs文件来禁用同意页面
RequireConsent = false,
AllowRememberConsent = false,
Run Code Online (Sandbox Code Playgroud)
我还在自定义视图服务上的文档后面添加了自定义视图.
那么现在如何禁用注销和注销页面,以便在用户单击注销按钮时自动将用户发送到主页?
我们计划在公司内部构建一个OAuth2授权服务器,我们正试图找出实现它的正确解决方案.目前我们正在考虑使用ThinkTecture IdentityServer3或普通的Microsoft.Owin.Security.OAuth包.我们考虑选择的一个问题是谁已经使用它.遗憾的是,我无法在ThinkTecture网站上找到有关IdentityServer3客户的任何信息,也无法在其他任何地方找到.有没有人知道,如果有任何重要的参与者,谁依赖这个库/框架?
如果任何人对上述两种解决方案中的哪一种更好有任何其他指导,那对我们来说也是有价值的.
干杯
我已经实现了Identity Server4,它看起来很棒.现在,我需要将原生移动应用程序(xamarin)连接到它.大多数博客和讨论建议使用"授权代码"或"混合"流程,github中的xamarin示例使用"隐式"流程.
我已经阅读了有关授权流程的文档,并且没有谈论用户名或密码. https://identityserver4.readthedocs.io/en/release/endpoints/authorize.html
我需要的是允许用户将他/她的用户名和密码提供给认证服务器,服务器最终应该返回访问代码.