当前位置: 首页 > 知识库问答 >
问题:

如果我们不需要SSO或OAuth2,我们的身份服务器是必要的吗?

卜勇
2023-03-14
    null

对于#1,没有人应该每次入住都登录,因为SPA1、SPA2和MVCApp1基本上都有不同的最终用户。我们不需要SSO。对于#2,不相关,因为我们永远不会允许这样。

这意味着我们有一个IdentityServer4项目,感觉有点矫枉过正,很难调试。比如用户将auth服务器而不是应用程序作为书签,重定向随机失败,等等。

我的问题是,我可以在API中切换到用户身份验证,然后杀死这个身份服务器吗?我们可以很容易地在API中添加Authenticateendpoint。有什么不安全的吗?

类似于这样:

    [AllowAnonymous]
    [HttpPost("authenticate")]
    public IActionResult Authenticate([FromBody]UserDto userDto)
    {
        var user = _userService.Authenticate(userDto.Username, userDto.Password);

        if (user == null)
            return Unauthorized();

        var tokenHandler = new JwtSecurityTokenHandler();
        var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
        var tokenDescriptor = new SecurityTokenDescriptor
        {
            Subject = new ClaimsIdentity(new Claim[] 
            {
                new Claim(ClaimTypes.Name, user.Id.ToString())
            }),
            Expires = DateTime.UtcNow.AddDays(7),
            SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
        };
        var token = tokenHandler.CreateToken(tokenDescriptor);
        var tokenString = tokenHandler.WriteToken(token);

        // return basic user info (without password) and token to store client side
        return Ok(new {
            Id = user.Id,
            Username = user.Username,
            FirstName = user.FirstName,
            LastName = user.LastName,
            Token = tokenString
        });
    }

共有1个答案

章学义
2023-03-14

我不能回答你的问题是否有必要,因为这可能是基于意见的。但我有些话要说。

IdentityServer是OpenID Connect在OAuth2之上的一个实现。如果您不想使用OpenID Connect和OAuth2,那么IdentityServer可能不是合适的工具。

但是,IdentityServer不仅仅实现规范。这也是关于责任的分离。

我不能告诉你该怎么做,我相信一切皆有可能。但是当你看一看设计原则时,我更喜欢分离关注点。

关于您的代码,七天的访问窗口是相当大的。尤其是在无法撤消令牌的情况下。

关于用户链接错误的页面,你不能阻止一切。

 类似资料:
  • 本文向大家介绍为什么我们需要微服务容器?相关面试题,主要包含被问及为什么我们需要微服务容器?时的应答技巧和注意事项,需要的朋友参考一下 要管理基于微服务的应用程序,容器是最简单的选择。它帮助用户单独部署和开发。您还可以使用Docker将微服务封装到容器的镜像中。没有任何额外的依赖或工作,微服务可以使用这些元素。

  • 问题内容: 我想知道一个仅在Eclipse上使用Maven或Ant的具体示例。 当我在Eclipse中进行开发时,Eclipse会为我做所有事情,而我只需要单击run按钮。而且,Eclipse可以让您将代码导出到Windows的可运行jar或.exe中。 所以我真的不知道为什么我需要Maven或Ant。 而且,如果确实需要, 我应该选择Maven还是Ant? 问题答案: 因为您的同事可能更喜欢Ne

  • 假设我是一个小型应用程序(),我正在与一个更大的企业()集成。 在此方案中,我是服务提供者,他们是标识提供者。他们的要求是,我使用 SSO(特别是 SAML 2.0)集成到他们的身份验证生态系统中。 对于标准的IdP发起的流程,用户将在他们的终端登录,他们将对我的应用程序的XML断言,然后将验证用户并将他们登录到我的应用程序(即设置浏览器会话)。 企业使用平联邦作为他们的身份服务器,他们很好奇我的

  • C++20概念的一个特点是,在某些情况下,您必须编写。例如,[expr.prim.req]/3中的这个示例:

  • 这里有一个udemy课程(来自“Lets Kode IT”),用Selenium开发一个web自动化框架。教师已经用Maven创建了一个Java项目。主要需要的依赖物是hamcrest、testng和Selenium。但是,教师坚持认为selenium-server依赖项也应该包括在内,因为“Maven可能有一个小故障,它可能无法获得selenium-java的所有依赖项(屏幕截图附上)”。 我的

  • Segmentfault 存在的意义是什么? 尝试着 Stackoverflow 上找到过很多的答案