我需要导航到一个网站并为该网站设置一些声明,但我找不到任何有关如何操作的说明。我一定是在搜索错误的单词。
我正在使用c#和.Net framework 4.6.1
我被要求更好地解释我的挑战。我正在开发2个独立的网站。用户将始终访问网站A,他们将使用Azure B2C进行身份验证。一旦通过身份验证,他们将执行一些操作,之后他们将导航到网站B. Azure B2C使用声明将用户数据传递到网站A,我想将其转发到网站B
答案 0 :(得分:0)
网站A的声明不会发送到网站B.
这可以这样工作:
创建自定义属性以存储信息: https://azure.microsoft.com/nl-nl/documentation/articles/active-directory-b2c-reference-custom-attr/
答案 1 :(得分:0)
您需要做的是在您的网站B中公开新的登录操作。此登录操作可以接收加密的令牌,其中包含您有兴趣转发到站点B的声明。一旦收到加密的令牌,网站B可以解密它并重新创建您感兴趣的声明。您可以使用内置的JwtSecurityToken处理程序:
例如:
public string CreateSecurityToken(string audience, IEnumerable<Claim> claims)
{
if (claims == null) return null;
var credentials = new SigningCredentials(
new InMemorySymmetricSecurityKey(Encoding.UTF8.GetBytes("SOMEKEY")),
"http://www.w3.org/2001/04/xmldsig-more#hmac-sha256",
"http://www.w3.org/2001/04/xmlenc#sha256");
var claimsIdentity = new ClaimsIdentity(claims, "Custom Authentication", System.Security.Claims.ClaimTypes.Name, System.Security.Claims.ClaimTypes.Role);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = claimsIdentity,
TokenIssuerName = TokenIssuer,
AppliesToAddress = "http://" + audience,
Lifetime = new Lifetime(DateTime.UtcNow, DateTime.UtcNow.AddMinutes(GetTokenExpirationMinutes(audience))),
SigningCredentials = credentials
};
var jwtHandler = new JwtSecurityTokenHandler();
var token = jwtHandler.CreateToken(tokenDescriptor);
return jwtHandler.WriteToken(token);
}
这将创建一个令牌,您可以将其发送到网站B上的登录方法