标签: thinktecture-ident-server

在真实场景中实施身份服务器身份验证

我正在调查IdentityServer 3如何工作,我仍然有完全理解的问题.

一般来说,概念对我来说很清楚,但我仍然不确定如何在实际项目中实现这一点.

这是我尝试在我的案例中实现的基本示例:link

我有web api项目,我想从任何客户端调用我的api方法(mvc,wpf,phone ...)所以我需要适合所有客户端的实现.

如果我理解得很好(可能我完全不理解),我应该有3个项目:

  • 客户
  • API
  • 承载IdentityServer的项目

所有项目都需要像图片一样的东西: 在此输入图像描述 图片上的步骤:

  1. 获得令牌
  2. 返回令牌
  3. 打电话给api
  4. 检查令牌是否正常
  5. 如果令牌好于返回数据,则显示错误

我的问题是:

  • 我的想法是如何工作的吗?
  • 我犯错误的地方?
  • 这个例子对我来说是否足够好?我错过了重要的事吗?
  • 我是否必须创建托管IdentityServer的项目,或者只需要代码示例?
  • IdentityServer主机项目是否必须是与api和客户端通信的控制台应用程序(如示例中所示),或者在现实世界中,这是以不同方式完成的吗?
  • 应该预测主机身份服务器是否了解客户端和用户?
  • 除主机标识服务器项目之外的其他一些项目是否应该了解客户端和用户?
  • 隐式流和混合流之间有什么不同,我需要什么呢?为什么?
  • 如何创建自己的登录视图?如果我使用web客户端,我想要登录html页面,但如果我使用wpf,还要有wpf登录视图,也可以使用移动客户端的不同视图.

编辑:我认为我需要 资源所有者流程.我将该资源用于查看用户输入用户名和密码的位置.

c# security authentication thinktecture-ident-server asp.net-web-api2

13
推荐指数
1
解决办法
1万
查看次数

Thinktecture IdentityServer v3和SAML

Thinktecture IdentityServer V3是否支持SAML,还是仅支持OAuth?

saml thinktecture-ident-server

11
推荐指数
2
解决办法
8946
查看次数

如何在Thinktecture IdentityServer v3中启用日志记录?

如何在Thinktecture IdentityServer v3中启用日志记录?

我目前正在收到一个通用的错误页面,说"出现意外错误".

我能够弄清楚通常的错误会被返回,ErrorPageFilterAttribute这似乎解决了一些ILog记录我所追求的细节的实现.

我怀疑它是一些具体的实现ILog需要以某种方式配置.

thinktecture-ident-server identityserver3

10
推荐指数
3
解决办法
1万
查看次数

有没有众所周知的thinktecture的身份服务器替代品?

除了thinktecture的身份服务器之外,还有谁知道其他任何身份服务器?我需要评估一些,但我找不到了?

federated-identity single-sign-on thinktecture-ident-server

9
推荐指数
2
解决办法
4245
查看次数

WIF(使用Thinktecture Identity Server)和双工WCF通道

我目前正在使用Thinktecture Identity Server版本2.4和Windows Identity Foundation来保护.net应用程序和服务器之间的通信,使用已发布的令牌.

我通过公开联合端点并使用通道工厂的"CreateChannelWithIssuedToken(SecurityToken)"方法来提供从Issue请求返回的安全令牌,从而在标准WCF NET TCP通道上工作.

但是,似乎没有允许我们传入实例上下文的DuplexChannelFactory的等效方法.我已经阅读了这篇文章 - http://msdn.microsoft.com/en-us/library/cc668765(v=vs.110).aspx - 其中详细介绍了如何创建双工绑定以实现此目的,但是在创建通道时我看不到在通道上设置安全令牌的方法.

在客户端凭据上有IssuedToken属性 - http://msdn.microsoft.com/en-us/library/system.servicemodel.description.clientcredentials.issuedtoken(v=vs.110).aspx - 但是它是只读的.

有没有人使用可以提供建议的TCP消息安全模式在双工通道上实现联邦安全性?

.net wcf wif thinktecture-ident-server

9
推荐指数
1
解决办法
764
查看次数

Thinktecture Identity server v3 Google提供商

我在使用Thinktecture身份服务器v3集成外部提供商即谷歌时遇到问题.我收到以下错误:"客户端应用程序未知或未经授权." 任何人都对这个错误有所了解.

thinktecture-ident-server

8
推荐指数
3
解决办法
6196
查看次数

AngularJS访问令牌安全问题

从授权服务器检索访问令牌后,在AngularJS中存储访问令牌的最佳做法是什么?我已经看到很多使用localStorage服务的建议,但后来我读过其他帖子/博客说永远不会使用localStorage来存储令牌,它不安全等等.

由于上面的混合信息,我很难用Angular包围安全性.

oauth angularjs thinktecture-ident-server

7
推荐指数
1
解决办法
1281
查看次数

依赖方上的IdentityServer3对称密钥问题

我刚刚设置了一个SelfHost(InMem with WS-Fed) Thinktecture IdentityServer3项目示例,我正在尝试使用它来获取JWT,问题是我只使用alg接收使用非对称密钥签名的令牌,RS256但我需要使用alg对称,HS256所以我可以在客户端上使用相同的密钥.

我试图通过在服务器上配置依赖方而没有成功来遵循一些示例.

例如,我看到以下标记:

var relyingParty = new RelyingParty()
{
    Enabled = true,
    Realm = "urn:carbon",
    Name = "Test party",
    SymmetricSigningKey = 
      Convert.FromBase64String("R03W9kJERSSLH11Px+R/O7EYfAadSMQfZD5haQZj6eU="),
    TokenLifeTime = 120
};
Run Code Online (Sandbox Code Playgroud)

但是,当我在我的代码上尝试它时,我有一个错误SymmetricSigningKey,它说:

'Thinktecture.IdentityServer.WsFederation.Models.RelyingParty'不包含'SymmetricSigningKey'的定义

我做错了什么?,提前谢谢!

UPDATE

启动文件的标记:

public void Configuration(IAppBuilder appBuilder)
{
    var factory = InMemoryFactory.Create(
        users: Users.Get(),
        clients: Clients.Get(),
        scopes: Scopes.Get()
    );

    var options = new IdentityServerOptions
    {
        IssuerUri = "https://idsrv3.com",
        SiteName = "Thinktecture IdentityServer3 - WsFed", …
Run Code Online (Sandbox Code Playgroud)

c# ws-security claims-based-identity jwt thinktecture-ident-server

7
推荐指数
0
解决办法
450
查看次数

Azure AD联合注销不会重定向到客户端应用程序

我正在使用Identity Server 3作为我正在构建的.Net MVC Web应用程序的中央身份验证服务器.

我已将身份验证服务器配置为使用Open ID Connect身份提供程序,以允许用户使用混合流程对多租户Azure Active Directory帐户进行身份验证.

目前,登录按预期工作,我的客户端应用程序重定向到身份验证服务器,然后身份验证服务器重定向到Microsoft进行登录,然后返回到具有正确填充的访问令牌的客户端应用程序.

但是,当我尝试注销时,我被正确地重定向到Microsoft,但页面在返回到身份验证服务器时停止,而不是继续返回到我的客户端应用程序.

我相信我已按照此处的说明正确设置了帖子注销重定向,我认为我的所有设置都可以.

当我下载Identity Server 3代码并对其进行调试时,它正确设置signOutMessageId到查询字符串上,但在UseAutofacMiddleware尝试重定向到我的映射signoutcallback位置时,在方法内部遇到以下错误:

抛出异常:mscorlib.dll中的"System.InvalidOperationException"

附加信息:已发送标头

我的验证服务器设置:

app.Map("identity", idsrvApp => {
    var idSvrFactory = new IdentityServerServiceFactory();

    var options = new IdentityServerOptions
    {                
        SiteName = "Site Name",
        SigningCertificate = <Certificate>,
        Factory = idSvrFactory,
        AuthenticationOptions = new AuthenticationOptions
        {
            IdentityProviders = ConfigureIdentityProviders,
            EnablePostSignOutAutoRedirect = true,
            PostSignOutAutoRedirectDelay = 3
        }
    };
    idsrvApp.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
    idsrvApp.UseIdentityServer(options);

    idsrvApp.Map("/signoutcallback", cb => { …
Run Code Online (Sandbox Code Playgroud)

c# azure logout thinktecture-ident-server identityserver3

7
推荐指数
1
解决办法
1177
查看次数

Identity Server 3刷新令牌在客户端配置中设置的到期时间之前到期

我正在为我的一个Identity Server 3客户端使用授权代码流,它配置如下:

ClientId = "tripgalleryauthcode",
ClientName = "Trip Gallery",
Flow = Flows.AuthorizationCode, 
AllowAccessToAllScopes = true,
RequireConsent = false,

// redirect = URI of our callback controller in the IOS application
RedirectUris = new List<string>
{
     "somecallbackuri"
},           

ClientSecrets = new List<Secret>()
{
    "somesecret"
},

// refresh token options
AccessTokenType = AccessTokenType.Jwt,
AccessTokenLifetime = 120,
RefreshTokenUsage = TokenUsage.OneTimeOnly,
RefreshTokenExpiration = TokenExpiration.Absolute,
AbsoluteRefreshTokenLifetime = 360,
Run Code Online (Sandbox Code Playgroud)

如您所见,它被配置为在2分钟内使访问令牌到期,在6分钟内使刷新令牌到期.我这样做是因为我想尝试在更短的时间范围内调试问题而不是我在生产中使用的那个:刷新令牌15天,访问令牌1小时.我们注意到由于某种原因,今天发布的刷新令牌明天不起作用.这就是为什么我决定减少时间,这就是发生的事情:

  1. 在凌晨1点05分,我做了一个刷新令牌请求并收到了新的refres和访问令牌
  2. 现在我希望我的刷新令牌在下午1:11到期
  3. 在下午1点10分,我使用refresh_token授权类型调用令牌端点,尝试获取新访问权限并刷新令牌.发生的是我收到HTTP 400错误,说这是invalid_grant.

我注意到了更多.发生的事情是访问令牌到期后2分钟我得到400错误.它说刷新令牌无效.

这是Identity Server的日志.

w3wp.exe Information: 0 : …
Run Code Online (Sandbox Code Playgroud)

thinktecture-ident-server identityserver3 identityserver4

7
推荐指数
1
解决办法
1373
查看次数