Duende Identity Server内部API授权

问题描述 投票:0回答:1

我在同一应用程序中使用 IdentityServer 7 和 Asp.Net Identity。

我怎样才能保留在 Duende Identity Service Helper 中注册的 RazorPages 和“cookies”身份验证处理程序,但允许我的用户管理系统具有不同的重定向,即只是说未经授权不重定向到登录页面。

这与 AddAuthentication Challenge 逻辑有关吗?

在与 IdentityServer 本身相同的应用程序中使用授权 api 会产生冲突吗?

此项目中唯一的 API 是针对用户的 registerUser、updatePhone、confirmPhone、getUserById 等

除了registerUser之外,都需要[Authorize]属性

services.AddAuthentication()
    .AddGoogle("google", options =>{...});

这是否意味着我需要拆分用户管理并将其视为具有链接到同一数据库的 IdentityServer 的资源?

或者为了简单起见,我仍然可以通过一些解决方法将其保留在同一个应用程序中吗?

asp.net asp.net-core identityserver4
1个回答
0
投票

1) 您所描述的有关将未经授权的用户重定向到登录页面的行为是使用基于 cookie 身份验证的 Web 应用程序的预期行为。就您而言,由于您正在集成 IdentityServer,因此您可以更加灵活地控制如何处理未经授权的请求。要在应用程序的某些部分(例如用户管理系统)中自定义未经授权请求的重定向行为,您可以使用

OnRedirectToLogin
cookie 身份验证选项中的事件。

下面的示例是代码将向未经授权的用户提供 401:

services.AddAuthentication(options =>
{
    // Your existing authentication setup
})
.AddCookie(options =>
{
    options.Events.OnRedirectToLogin = context =>
    {
        if (context.Request.Path.StartsWithSegments("/api") && context.Response.StatusCode == 200)
        {
            context.Response.StatusCode = 401;
            return Task.CompletedTask;
        }

        context.Response.Redirect(context.RedirectUri);
        return Task.CompletedTask;
    };
});

2)在与 IdentityServer 本身相同的应用程序中使用授权 api 会产生冲突吗?

不,在与 IdentityServer 相同的应用程序中使用具有 API 的

[Authorize]
属性本身不应引起冲突。但您仍然必须正确配置身份验证方案。为了避免冲突,请确保使用
[Authorize]
属性正确保护您的 API 端点,并且正确设置它们所依赖的身份验证方案来处理 API 请求(可能使用不记名令牌)。

3)这是否意味着我需要拆分用户管理并将其视为具有链接到同一数据库的 IdentityServer 的资源?

或者为了简单起见,我仍然可以通过一些解决方法将其保留在同一个应用程序中吗?

将用户管理系统保留在与 IdentityServer 相同的应用程序中是完全可行的,特别是对于更简单或中等复杂的场景。这可以简化部署和维护,同时仍然提供良好的安全性和功能。

但是,随着您的应用程序变得越来越复杂,或者如果您需要以不同的方式扩展系统的各个部分,您可能会考虑通过将用户管理系统移至单独的 API 中来分离关注点。该 API 仍将使用 IdentityServer 进行身份验证,但将与 IdentityServer 应用程序本身解耦。这种方法提供了更大的灵活性,可以帮助您保持系统的组织性和可扩展性。

您不一定需要将用户管理系统拆分为单独的应用程序或将其视为外部资源。通过正确的配置(例如自定义未经授权的重定向行为和仔细配置身份验证方案),您可以保持应用程序的简单性和一致性,同时充分利用 IdentityServer 和 ASP.NET Identity 的全部功能。确保您的配置精确并根据应用程序的需求进行定制,特别是在身份验证和授权方面。

© www.soinside.com 2019 - 2024. All rights reserved.