.net MVC4, framework4.5 框架使用aad登录 遇到的坑

.net MVC4, framework4.5 框架使用aad登录 遇到的坑

先上官方文档, 我也是根据官方文档来做踩得坑!
https://learn.microsoft.com/zh-cn/azure/active-directory/develop/web-app-quickstart?pivots=devlang-aspnet&tabs=windows
框架上我的项目一开始是 framework4.0 升到4.5的 因为最低支持4.5版本

1. 先安装依赖包

Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

在这里插入图片描述

2. 设置aad 重定向

在这里插入图片描述
在这里插入图片描述
没有应用的话新注册
进入应用, 选择身份验证 > 添加url > 令牌选择 ID令牌 > 项目类型根据项目需要选择 > 保存
在这里插入图片描述

3. 配置 Web.config

在这里插入图片描述
参数官方文档有详细说明
在这里插入图片描述

4. 修改代码

4.1 配置 startup启动类

先添加类
在这里插入图片描述
然后把官方的代码复制进去就可以了

启动项目

登录的方法和注销可以直接用官方给的

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}
//注销
HttpContext.GetOwinContext().Authentication.SignOut(
                    OpenIdConnectAuthenticationDefaults.AuthenticationType,
                    CookieAuthenticationDefaults.AuthenticationType);

这时候就可以启动你的项目了

坑1

启动点击aad登录这个时候就遇到了一个框架的坑 , 点击跳转不到aad的登录页面,强制跳转到这个路径: Account/Login , 后查资料看到这个: https://www.cnblogs.com/amywechat/p/4885483.html
要在web.config加下配置

<add key="enableSimpleMembership" value="false" />

坑2

现在就能跳转到aad的登录页面了 , 完成登录回调后我又遇到一个报错: IDX21323

DX21323: RequireNonce is ‘[PII is hidden]’. OpenIdConnectProtocolValidationContext.Nonce was null, OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce was not null. The nonce cannot be validated. If you don’t need to check the nonce, set OpenIdConnectProtocolValidator.RequireNonce to ‘false’. Note if a ‘nonce’ is found it will be evaluated.

解决方案我 是把http访问改为https 就可以了

坑3

成功跳转后, 我发现我系统并没有登录成功, 检查发现已接收到token 但是request的 IsAuthenticated 状态没有改变
解决方案 : 在startup.cs 添加一个配置

app.UseCookieAuthentication(new CookieAuthenticationOptions 
            {
                CookieManager = new SystemWebCookieManager()
            });

这就可以解决了

坑4

因为我的项目的账号类型限制只能是仅我的组织, 所以 参数 Tenant 改为目录租户ID, 控制台也要修改账号类型, 一切修改好了 登录测试 报错:
在这里插入图片描述
解决方案, 在startup.cs 添加这段代码

IdentityModelEventSource.ShowPII = true;
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
            | SecurityProtocolType.Tls11
            | SecurityProtocolType.Tls12
            | SecurityProtocolType.Ssl3;

到这项目就基本可以使用aad登录了 , 也可以根据需求使用联合登录 先跳aad登录 再跳 ADFS登录, 这块代码上不用调整了, 在AAD上配置好就可以了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现 Azure Active Directory (AAD)的单点登录(SSO),你可以使用以下步骤: 1. 注册应用程序:在 Azure 门户中,创建一个应用程序并将其配置为使用 AAD 进行身份验证。在注册应用程序时,你需要提供应用程序的重定向 URL,该 URL 是用户成功登录后将被重定向到的地址。 2. 配置身份验证:在应用程序的设置中,配置身份验证选项。选择适合你的应用程序类型的身份验证流程,如 OAuth 2.0 或 OpenID Connect。在配置中,你需要提供 AAD 的租户 ID、客户端 ID 和客户端机密(或证书),这些信息将用于通过 AAD 进行身份验证。 3. 实现登录逻辑:在你的应用程序中实现登录逻辑,以便在用户点击登录按钮时将其重定向到 AAD 登录页面。在用户成功登录后,AAD 将向你的应用程序返回一个授权码或令牌。 4. 验证令牌:接收到授权码或令牌后,你的应用程序需要使用 AAD 提供的 SDK 或库来验证令牌的有效性,并提取有关用户的信息。这样可以确保用户已成功通过 AAD 进行身份验证,并获取其相关信息。 5. 设置会话和单点注销:一旦用户成功登录并验证令牌,你可以创建一个会话来跟踪用户的登录状态。同时,你还可以实现单点注销功能,以允许用户一次注销所有与 AAD 关联的应用程序。 这只是一个简单的概述,实现 SSO 还涉及到更多的细节和配置选项。你可以参考 Azure 文档中的详细指南来了解如何在你的应用程序中实现 AAD 的单点登录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值