IdentityServer3发出部分登录cookie

时间:2016-03-27 23:02:43

标签: c# .net asp.net-identity identityserver3

我目前在我的Idsrv登录页面上有一个注册链接,该链接重定向到与Idsrv相同的管道上托管的MVC注册页面。注册流程如下:

  1. 创建帐户(电子邮件和密码)并保存到DB。
  2. 选择订阅并购买(使用userId在DB中存储购买信息)。
  3. 重定向回客户端应用
  4. 过去,登录页面上的注册链接会将用户带到帐户创建页面,然后输入电子邮件和密码我会使用以下代码发出Idsrv登录cookie:

    var login = new AuthenticatedLogin
                    {
                        IdentityProvider = IdentityServer3.Core.Constants.BuiltInIdentityProvider,
                        Subject = user.Id,
                        Name = user.UserName
                    };
    
       this.Request.GetOwinContext().Environment.IssueLoginCookie(login);
    

    订阅&购买页面使用[IdentityServerFullLogin]属性进行修饰,以确保只有授权用户才能访问它们。

    我已经添加了外部登录支持,并且在完成本地帐户设置之前使用部分登录将新外部用户重定向到此注册序列。我遇到的问题是现在我有[IdentityServerPartialLogin]和[IdentityServerFullLogin]属性需要在相同的控制器方法上,这显然不起作用。我想知道如何修改我的原始注册序列(使用注册链接)来使用部分登录而不是完全登录并发出完整登录cookie。似乎需要一个Environment.IssuePartialLoginCookie()方法来完成我需要做的事情,但不知道如何继续。

1 个答案:

答案 0 :(得分:0)

您必须更改执行授权的方式。您可以在操作方法本身中显式/手动执行此操作,而不是使用这些属性。如果用户具有以下两种登录类型之一,可以使用简单的OWIN扩展方法来学习:https://identityserver.github.io/Documentation/docsv2/advanced/owin.html