我使用Identityserver3作为MVC应用程序的授权服务器。因此,我的Startup
类如下:
public void Configuration(IAppBuilder app)
{
app.UseExternalSignInCookie();
JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies"
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = "http://localhost:5000/",
ClientId = "mvc",
RedirectUri = "http://localhost:12262/",
ResponseType = "id_token",
UseTokenLifetime = false,
SignInAsAuthenticationType = "Cookies"
});
}
这是我的标识符用户
子类:
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
userIdentity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", this.Email));
userIdentity.AddClaim(
new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider",
this.Email));
return userIdentity;
}
public UserType UserType { get; set; }
....
}
这是我的Global。尽快。cs
:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;
}
但是在我的帐户/注册表中,在包含
@Html的行中查看。AntiForgeryToken()
我收到此错误:
类型的索赔
提供的索赔标识中没有http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier。
我在SO上看到过一些类似问题的问题(可能在任何地方都没有使用标识符服务器3),但是它们的解决方案似乎不起作用,至少我使用它们的方式是这样。
恕我直言,我认为问题是索赔没有添加在正确的地方。但是为了证实这一点,我需要一些反馈。你在使用微软吗?AspNet.身份*(Nuget包)与身份服务器连接?您是通过代码创建用户还是从数据库中读取用户?
例如,我使用AspNet。与IdtyServer3身份,并为每个用户添加声明,您可以修改用户服务GetClaimsFrom帐户方法,如以下所示:
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Threading.Tasks;
using IdentityServer3.Core;
using IdentityServer3.AspNetIdentity;
using IdentityServer3.Core.Configuration;
using IdentityServer3.Core.Services;
namespace ..... {
public class UserService : AspNetIdentityUserService<IdentityUser, string>
{
public UserService(UserManager userMgr) : base(userMgr)
{
}
protected override async Task<IEnumerable<System.Security.Claims.Claim>> GetClaimsFromAccount(IdentityUser user)
{
var claims = (await base.GetClaimsFromAccount(user)).ToList();
// to make sure the email is in the claims
if (claims.Any(c=>c.Type == Constants.ClaimTypes.Email) && !string.IsNullOrWhiteSpace(user.Email))
{
claims.Add(.....);
}
return claims;
}
}
....
}
请注意,IdtyServer3.core带有包含声明类型的常量(常量。索赔类型。电子邮件)。
希望这有一点帮助:)
我相信在我的应用程序中看到了一些标识声明的缓存,该应用程序使用WSO2IS5.3.0。当通过UserStoreManager.SetUserClaimValues(例如,http://wso2.org/claims/identity/AccountDisabled)更改标识声明时,该更改需要一些时间才能反映在随后对UserStoreManager.GetUserClaimValues的调用中 我搜
我最近换了我的ASP。NET应用程序到ASP。NET标识远离Azure的Active Directory配置。我在本地测试时没有问题,但是当我发布到Azure时,我得到以下错误: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier或http://schemas.microsoft.com/accesscontro
我正在使用SODA for Java存储和检索Oracle12c DB中的文档。我正在效仿这个例子。 这一例外背后的原因将是什么?
这是我的程序:
我正在调试一个非常大的树着色项目,在该项目中,作者使用glsl文件来着色树,但我在编译glsl文件时遇到了麻烦: 以下是错误日志: 我使用mac osx,Xcode7.0,OpenGL和glut都是默认版本。Glew版本是1.13.0。 这是因为版本与作者使用的原始版本不匹配吗?因为我检查了原始版本,所以他使用了GLEW 1.9.0和GLUT 3.7.6。 //////更新/////// 原来ma
所以我一直有这个错误,我不知道发生了什么。我在谷歌上搜索了一下,读了一些关于这个错误的问题,但什么都没用。我只想运行它,这样我就可以完成我的项目。 错误:开始低库存;结束;*第1行错误:ORA-06550:第1行,第9列:PLS-00201:标识符“LOWINVENTORY”必须声明ORA-06550:第1行,第7列:PL/SQL:忽略语句 编辑: 表创建: