Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Azure AD中验证用户名和密码?_C#_Azure Active Directory_Jwt_Bearer Token - Fatal编程技术网

C# 如何在Azure AD中验证用户名和密码?

C# 如何在Azure AD中验证用户名和密码?,c#,azure-active-directory,jwt,bearer-token,C#,Azure Active Directory,Jwt,Bearer Token,我想要一个示例代码,允许用户在Azure AD中使用用户名和密码登录。成功登录后,我想要获得访问令牌 目前我与Azure广告没有联系,我硬编码了一个用户 // POST api/values [HttpPost, Route("login")] public IActionResult Login([FromBody] LoginModel user) { if (user == null

我想要一个示例代码,允许用户在Azure AD中使用用户名和密码登录。成功登录后,我想要获得访问令牌

目前我与Azure广告没有联系,我硬编码了一个用户

        // POST api/values
        [HttpPost, Route("login")]
        public IActionResult Login([FromBody] LoginModel user)
        {
            if (user == null)
            {
                return BadRequest("Invalid client request");
            }
            if (user.UserName == "JO3434" && user.Password == "defDDMKJM")
            {
                var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("superSMKLJMKey@345"));
                var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);

                var claims = new List<Claim>
                {
                    new Claim(ClaimTypes.Name, user.UserName)
                };
                
                var token = new JwtSecurityToken(
                    audience: "http://site.azurewebsites.net",
                    issuer: "http://site.azurewebsites.net",
                    claims: claims,
                    expires: DateTime.Now.AddMinutes(60),
                    signingCredentials: signinCredentials
                );

                var results = new
                {
                    token = new JwtSecurityTokenHandler().WriteToken(token),
                    expiration = token.ValidTo
                };
                return Ok(results);
            }
            else
            {
                return Unauthorized();
            }
        }
    }
//发布api/值
[HttpPost,路由(“登录”)]
公共IActionResult登录([FromBody]登录模型用户)
{
if(user==null)
{
返回错误请求(“无效的客户端请求”);
}
if(user.UserName==“JO3434”&&user.Password==“defDDMKJM”)
{
var secretKey=new SymmetricSecurityKey(Encoding.UTF8.GetBytes(“superSMKLJMKey@345"));
var signinCredentials=新的签名凭证(secretKey,SecurityAlgorithms.HmacSha256);
var索赔=新列表
{
新索赔(ClaimTypes.Name、user.UserName)
};
var token=新的JwtSecurityToken(
听众:“http://site.azurewebsites.net",
发行人:“http://site.azurewebsites.net",
索赔:索赔,
过期:DateTime.Now.AddMinutes(60),
签名凭据:签名凭据
);
var结果=新
{
token=new JwtSecurityTokenHandler().WriteToken(令牌),
expiration=token.ValidTo
};
返回Ok(结果);
}
其他的
{
未经授权返回();
}
}
}

如果没有与Azure AD的连接,您无法验证用户,而且我认为没有必要这样做,如果您使用Method获得令牌,它实际上使用,它将自动为您验证用户,如果用户无效,由于用户名或密码无效,验证凭据时将出现错误


+1票并接受为解决方案。感谢AcquireTokenByUsernamePassword和一系列步骤,我现在可以登录并获得有效的令牌。。。谢谢你这么高兴。