0

我对Azure AD使用以下位来验证ASP.NET Core。Azure AD OpenIDConnect + ASP.NET核心 - 认证和额外权限/令牌?

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

我有创建天青AD应用后基本登录/ AUTH工作。用户可以登录/注销。

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

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

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

回答

1

我的问题是有这个,什么是当用户验证的登录到一个数据库的最佳方式?我曾考虑将重定向网址设置为端点,然后保存,然后重定向回“主页”,但这是否理想?

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

Azure的AD已经提供了大量的报告,以了解为您的组织目录的完整性和安全性。(参见here

如果您正在使用Azure的AD高级版,您可以查看登录活动通过以下Azure new portalenter image description here

而且,如果要将登录活动存储在Web应用程序中,则可以在验证令牌后编写自定义代码。这是给你参考代码:

// 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); } 
      }, 

}); 

此外,是否有可能通过检索这种方法的承载令牌?

是的。我们可以在收到授权码后获取令牌。您可以参考代码示例here以从asp.net核心应用程序获取令牌。

+0

感谢您的回复。 OnTokenValidated代码位于我的Startup.cs中。不知道如何这是一个理想的点击DB – aherrick

+0

身份验证流程是由用户开始,用户输入正确的用户名/密码后,Azure AD会将页面重定向到带有id_token的Web应用程序。然后,OWIN组件将尝试根据id_token验证用户信息。验证令牌后,“OnTokenValidated”将会触发。代码在哪个类上的位置并不重要。 –

+0

ASP.Net Core 2.0仍然可以吗?这个API变化很大。 – zuckerthoben