c# - 如何获取登录用户的联合令牌 - Razor 站点 c#
问题描述
我正在尝试将当前登录用户的联合令牌传递给另一个 Microsoft 服务。
我是用户 RazorPages 和 .net Core
我正在访问我的用户:
OnGet{
var type = this.User.Identity.AuthenticationType; //AuthenticationTypes.Federation
var token = ?????
var credentials = new VssCredentials(token);
}
我完全不知道从哪里获取令牌,我已经在断点处停下来检查对象,但没有发现任何明显的东西。
解决方案
对于WsFederation
,它不会将令牌保存到 User.Identity。
您可以尝试options.Events.OnSecurityTokenValidated
访问令牌并保存它。
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
})
.AddWsFederation(options =>
{
//rest configuration
options.Events.OnSecurityTokenValidated = context => {
var token = context.ProtocolMessage.GetToken();
var identity = new ClaimsIdentity();
identity.AddClaim(new Claim("token", token));
context.Principal.AddIdentity(identity);
return Task.CompletedTask;
};
})
.AddCookie();
然后从var claims = User.Claims;
推荐阅读
- react-native - React Native - 单击按钮后更新文本
- xamarin - Uno 平台自定义渲染器
- date - 如何在 Kotlin 中转换字符串日期
- python - 用python解析数据
- geopandas - OSMxn - 如何使用边界框和 figsize 绘制到特定位置和分辨率
- java - 是否有任何功能或建议将列表拆分为子列表
- java - 将另一个依赖项(休眠)的所有依赖项隐藏到 jar 中
- discord.js - Discord JS - 从附件下载图像
- python - 从命令行打印 python 的 sys.path
- azure-devops - 使用 Azure DevOps Release 将服务角色和副本映射到服务器