C# Web api Owin身份验证从密钥检索用户信息

C# Web api Owin身份验证从密钥检索用户信息,c#,authentication,asp.net-web-api,asp.net-identity,owin,C#,Authentication,Asp.net Web Api,Asp.net Identity,Owin,大家好首先我对asp.net身份和Owin身份验证有一点了解,如果我的问题不正确,请原谅 我有一个web api项目,它正在使用Active directory进行身份验证,使用该api的客户端是iphone应用程序。为了保护用户名和密码,我必须使用Owin身份验证。此外,我正在将Microsoft dynamic CRM与web api集成。为了授权CRM,我们需要在OwinKEY中加密的用户名和密码 但是我不知道如何从owin密钥中解密用户信息。有人能帮助我吗?我的owin身份验证代码如下所

大家好首先我对asp.net身份和Owin身份验证有一点了解,如果我的问题不正确,请原谅

我有一个web api项目,它正在使用Active directory进行身份验证,使用该api的客户端是iphone应用程序。为了保护用户名和密码,我必须使用Owin身份验证。此外,我正在将Microsoft dynamic CRM与web api集成。为了授权CRM,我们需要在Owin
KEY
中加密的用户名和密码

但是我不知道如何从owin密钥中解密用户信息。有人能帮助我吗?我的owin身份验证代码如下所示

 /// <summary>
        /// Signin
        /// </summary>
        /// <param name="user"></param>
        /// <param name="options"></param>
        /// <param name="authManager"></param>
        /// <returns></returns>
        public string SignIn(User user, OAuthAuthorizationServerOptions options, IAuthenticationManager authManager)
        {
            ClaimsIdentity identity = SetClaims(user, options);
            AuthenticationTicket ticket = new AuthenticationTicket(identity, new AuthenticationProperties());

            var currentUtc = new SystemClock().UtcNow;
            ticket.Properties.IssuedUtc = currentUtc;
           // ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromDays(user.AuthenticationExpiry));
            ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromDays(180));
            authManager.SignIn(identity);

            return options.AccessTokenFormat.Protect(ticket);
        }

        private ClaimsIdentity SetClaims(User user, OAuthAuthorizationServerOptions options)
        {
            ClaimsIdentity identity = new ClaimsIdentity(options.AuthenticationType);

            string userdata = user.UserName +"~"+ user.Password;

            identity.AddClaim(new Claim(ClaimTypes.UserData, userdata.ToString()));
            return identity;
        }
//
///签名
/// 
/// 
/// 
/// 
/// 
公共字符串签名(用户用户、OAutAuthorizationServerOptions选项、IAAuthenticationManager authManager)
{
ClaimsIdentity identity=SetClaims(用户,选项);
AuthenticationTicket票证=新的AuthenticationTicket(标识,新的AuthenticationProperties());
var currentUtc=新系统时钟().UtcNow;
ticket.Properties.IssuedUtc=currentUtc;
//ticket.Properties.ExpiresUtc=currentUtc.Add(TimeSpan.FromDays(user.authenticationexpire));
ticket.Properties.ExpiresUtc=currentUtc.Add(TimeSpan.FromDays(180));
authManager.SignIn(身份);
返回选项.AccessTokenFormat.Protect(票证);
}
private ClaimSideEntity SetClaims(用户用户、OAuthAuthorizationServerOptions)
{
ClaimsIdentity identity=新的ClaimsIdentity(options.AuthenticationType);
字符串userdata=user.UserName+“~”+user.Password;
identity.AddClaim(新声明(ClaimTypes.UserData,UserData.ToString());
返回身份;
}

如何使用密钥授权每个请求。因为iphone应用程序只提供我在用户登录时提供的密钥。有人能帮忙吗

你的意思是你想要客户端用来
发布到
/token
端点的用户名/密码吗?是的,我得到了解决方案。问题是我忘记在标题上添加“承载人”字前缀了