【问题标题】:Azure AD OpenIDConnect + ASP.NET Core - Authenticate and Extra Permissions/Token?Azure AD OpenIDConnect + ASP.NET Core - 身份验证和额外权限/令牌?
【发布时间】:2017-05-06 08:17:40
【问题描述】:

我正在对我的 Azure AD 使用以下位来通过 ASP.NET Core 进行身份验证。

https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/

https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnetcore

创建 Azure AD 应用后,我的基本登录/身份验证工作正常。用户可以登录/注销。

我的问题是,当用户 Auth 登录到数据库时,最好的方法是什么?我考虑过将重定向 URL 设置为端点,保存,然后只是重定向回“主页”,但这是理想的吗?

另外,是否可以通过这种方法检索不记名令牌?或者这是否需要另一种类型的调用或扩展“范围”?例如,我可以检索经过身份验证的用户管理器。

https://graph.microsoft.com/v1.0/me/manager

【问题讨论】:

    标签: azure authentication asp.net-core openid-connect azure-ad-graph-api


    【解决方案1】:

    我的问题是,当用户 Auth 登录到数据库时,最好的方法是什么?我考虑过将重定向 URL 设置为端点,保存,然后只是重定向回“主页”,但这是理想的吗?

    这种方式只能记录那些已经成功登录您的应用的人。它无法记录那些尝试登录您的应用但输入错误密码的用户。

    Azure AD 已经提供了大量报告来了解组织目录的完整性和安全性。(请参阅 here

    如果您使用的是 Azure AD Premium,您可以通过下面的 Azure new portal 查看登录活动:

    如果您想将登录活动存储在您的网络应用程序中,您可以在验证令牌后编写自定义代码。以下是供您参考的代码:

    // Configure the OWIN pipeline to use OpenID Connect auth.
    app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
     {
                ClientId = Configuration["AzureAD:ClientId"],
                Authority = String.Format(Configuration["AzureAd:AadInstance"], Configuration["AzureAd:Tenant"]),
                ResponseType = OpenIdConnectResponseType.IdToken,
                PostLogoutRedirectUri = Configuration["AzureAd:PostLogoutRedirectUri"],
                Events = new OpenIdConnectEvents
                {
                    OnRemoteFailure = OnAuthenticationFailed,
                    OnTokenValidated = context => {
                        //write the custom code to store users login-in                         
                        return Task.FromResult(0); }
                },
    
    });
    

    另外,是否可以通过这种方法检索不记名令牌?

    是的。我们收到授权码后就可以拿到token了。你可以参考代码示例here从asp.net core app获取token。

    【讨论】:

    • 感谢您的回复。 OnTokenValidated 代码位于我的 Startup.cs 中。不知道这是一个如何打 DB 的理想地点
    • 身份验证流程由用户启动,在用户输入正确的用户名/密码后,Azure AD 会将页面重定向到带有 id_token 的 Web 应用程序。然后 OWIN 组件将尝试根据 id_token 验证用户信息。验证令牌后,OnTokenValidated 将触发。代码在哪个类上的位置并不重要。
    • 在 ASP.Net Core 2.0 中这仍然可行吗? api变化很大。
    猜你喜欢
    • 1970-01-01
    • 2020-07-27
    • 2021-10-28
    • 1970-01-01
    • 2019-12-13
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    相关资源
    最近更新 更多