.Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

作者 : 慕源网 本文共1857个字,预计阅读时间需要5分钟 发布时间: 2021-12-6 共341人阅读
在本文中,我们将学习如何使用 Azure Active Directory、OAuth2 和 Swagger 保护我们的 .Net Core Web API。众所周知,swagger 是在.Net 5.0模板中内置配置的,因此我们不需要在最新的 .Net 5.0 中记录我们的 API。

.Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

在上一篇文章 – 使用 .Net 5.0 Web API 启用 Azure AD 身份验证中, 我写了关于 Azure Active Directory 设置和使用 Azure AD 保护我们的 API。

因此,在本文中,我将展示如何添加额外的设置以使用 swagger 对 API 进行身份验证。设置 Azure AD 后,我们需要添加 OAuth 2 身份验证的代码。

我们正在添加一个 OAuth2 类型的 SecurityDefinition。并且还配置身份验证 URL、令牌 URL 和范围。

Startup.cs

c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme {  
    Type = SecuritySchemeType.OAuth2,  
        Flows = new OpenApiOAuthFlows() {  
            Implicit = new OpenApiOAuthFlow() {  
                AuthorizationUrl = new Uri("https://login.microsoftonline.com/*Tenant ID*/oauth2/v2.0/authorize"),  
                    TokenUrl = new Uri("https://login.microsoftonline.com/*Tenant ID*/oauth2/v2.0/token"),  
                    Scopes = new Dictionary < string, string > {  
                        {  
                            "*Scope*",  
                            "Reads the Weather forecast"  
                        }  
                    }  
            }  
        }  
}); 

这将启用 Swagger UI 中的授权按钮,

.Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

单击授权选项后,我们需要提供 ClientID 并选择范围。

完成后单击授权按钮,这将打开 Microsoft Active Directory 身份验证页面,但我们可能会收到错误消息,因为我们需要授予访问令牌 和Id 令牌的 访问权限,我们可以从身份验证菜单启用它,

.Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

接下来,我们需要配置重定向 URL,它会在身份验证成功后重定向 https://localhost:*PortNo*/swagger/oauth2-redirect.html

您可以将其添加到身份验证、Web、重定向 URL 下并保存。

.Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

我们正在 Swagger 配置中添加 OAuth2 设置的安全要求,

Startup.cs
c.AddSecurityRequirement(new OpenApiSecurityRequirement() {  
    {  
        new OpenApiSecurityScheme {  
            Reference = new OpenApiReference {  
                    Type = ReferenceType.SecurityScheme,  
                        Id = "oauth2"  
                },  
                Scheme = "oauth2",  
                Name = "oauth2",  
                In = ParameterLocation.Header  
        },  
        new List < string > ()  
    }  
});  

最后,我们需要在 Swagger UI 中添加 ClientID 和客户端密钥以验证凭据。

Startup.cs
app.UseSwaggerUI(c => {  
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "AzureAD_OAuth_API v1");  
    //c.RoutePrefix = string.Empty;    
    c.OAuthClientId("Client Id");  
    c.OAuthClientSecret("Client Secret Key");  
    c.OAuthUseBasicAuthenticationWithAccessCodeGrant();  
});

现在我们已经完成了配置。

运行应用程序,您将能够在 UI 上看到身份验证图标,单击它们将显示预填充客户端 ID 的身份验证对话框。

单击授权,这将打开 Microsoft 登录对话框。首先,您需要提供电子邮件和下一个密码。最后,它会显示这样的权限对话框。

.Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

添加凭据以进行身份​​验证并获取访问令牌。然后开锁符号变为 闭锁符号,

.Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

输出

.Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

所以这就是我们可以轻松地将 OAuth2 集成到 .Net Core Web API 中的方式,我们可以通过类似的方式集成其他身份验证协议。

源代码 –  GitHub 存储库

感谢您的阅读,请在评论部分告诉我您的问题、想法或反馈。我感谢您的反馈和鼓励。


慕源网 » .Net 5.0 中使用 Azure AD 和 Swagger 启用 OAuth 2 授权

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录