Azure active directory 未登录当前用户的Azure Active Directory Web应用程序

Azure active directory 未登录当前用户的Azure Active Directory Web应用程序,azure-active-directory,claims-based-identity,adal,directoryservices,Azure Active Directory,Claims Based Identity,Adal,Directoryservices,我正在学习一个较老的教程(),该教程演示了如何创建一个使用ADAL连接到Azure Active Directory租户的web应用程序。有一个包含DirectoryService类的类库,我相信它能够检索AD用户属性。为了安全起见,我想为这个项目创建一个登录方法,并且能够识别哪个用户登录到应用程序。目前没有一种登录方法可以通过输入用户名/密码对AD进行身份验证,因此我对应用程序如何仅使用Web.config中的AppId、Domain和AppSecret检索用户属性感到有点困惑,而实际上没有人

我正在学习一个较老的教程(),该教程演示了如何创建一个使用ADAL连接到Azure Active Directory租户的web应用程序。有一个包含DirectoryService类的类库,我相信它能够检索AD用户属性。为了安全起见,我想为这个项目创建一个登录方法,并且能够识别哪个用户登录到应用程序。目前没有一种登录方法可以通过输入用户名/密码对AD进行身份验证,因此我对应用程序如何仅使用Web.config中的AppId、Domain和AppSecret检索用户属性感到有点困惑,而实际上没有人使用其AD凭据登录或重定向到login.microsoftonline/{tenantId}…我不知道我是否有意义,但我希望能够添加一个登录方法,以便用户被迫登录,从而获得该特定用户的声明。但是,如果我已经在使用ADAL,我还可以合并Owin吗?

您的问题有两个部分-

1。在不要求最终用户明确登录的情况下,该应用程序目前运行情况如何

此示例使用客户端凭据授予,在该示例中,您不需要最终用户登录,而是使用应用程序本身的标识来获取身份验证令牌并将其用于进一步的操作。正如您提到的,它只需要web.config中的AppId、域和appsecret。你可以在这里阅读所有关于它的信息-

获取令牌的相关代码位于MVCDirectoryGraphSample\Helpers\MVCGraphServiceHelper.cs文件中

  AuthenticationContext authenticationContext = new AuthenticationContext(authString); 
                ClientCredential clientCred = new ClientCredential(ConfigurationManager.AppSettings["AppPrincipalId"],
2。如何添加登录方法以强制用户登录您的web应用程序

您可以开始使用授权代码授权流之类的东西,而不是客户端凭据。请在此处查看有关不同的应用程序的文档。您的案例看起来像一个调用Graph API的web应用程序,如下所述


此处提供了执行此操作的确切代码示例-

感谢您的回复并提供了一些提示。可以使用两种身份验证方法吗?据我所知,客户端凭据授权负责根据应用程序注册的租户对应用程序进行身份验证。如果我还想为将要使用该应用程序的用户提供登录,该应用程序通过让用户登录到其Microsoft工作帐户来验证该用户,通过添加对Owin的引用并实现OpenIdConnect来获取用户声明id和名称,它会不会搞乱客户端凭据授予?我知道我可能只会单独授予用户访问权限,因为使用它的用户不多,但由于它包含AD用户信息,我正试图锁定它。我不太了解身份验证,但我还没有找到一种方法来实现客户端凭据授予身份验证和Owin上下文身份验证。我想我已经满足了您的要求,但如果我出错,请纠正我。最终用户>>Web应用程序(通过授权代码授权流强制用户登录)。Web应用程序>>图形API或任何其他API(使用类似于示例中的配置项的客户端凭据授予流)。如果您将使用客户机凭据获取的令牌传递给下一个API,则这两种方法都应该相当独立地工作。这绝对是可行的,从使用我共享的示例的代码开始。。如果你遇到了一个新问题,其中有你所面临的具体细节/问题,那么我/其他人可以更好地帮助你。评论很少引起足够的注意:)