在我的ASP.NET Core Web API中User.Identity.Name为空
我在一个数据库中在一个项目中添加了ASP.NET核心身份和身份server4,我想在所有其他项目中使用我的身份服务器. IdentityServer4启动类 public class Startup { public IConfigurationRoot Config { get; set; } public Startup(IConfiguration configuration) { Config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", false) .Build(); Configuration = configu
0 2024-04-21
编程技术问答社区
我如何在ASP.NET中使用AD认证?
我想知道如何在项目/login.aspx页面中使用Active Directory,但为此我找不到很多资源.我正在使用VS.NET 2013 ASP.NET C#4.0.我以前从来没有这样做,我只是想知道您如何访问Active Directory和在组级别上,因此只有此组中的人只能访问该应用程序.请任何有链接或任何信息的人.我真的很陷入困境,我需要能够工作. 解决方案 我使用Active Directory并表单身份验证.您可以将其与默认帐户/login.aspx一起使用.这些是我用来设置它的链接. 此链接将向您展示如何使用Active Directory登录. 我更喜欢两者都使用它们,因为第一个链接将向您展示如何使登录用户的广告组显示,但它将它们保存到身份验证cookie中.您将必须解密此cookie,以查看广告用户所在的组...这可能很麻烦. 第二个链接将表明您必须使用角色,这要简单得多. 您可以使用一个简单的语句. if(User.IsUserInR
0 2024-04-21
编程技术问答社区
在ASP.NET Core中基于索赔的授权
是否有使用基于索赔的ASP.NET Core的权威示例项目? 类似于[ https://silk.codeplex.com/] > 解决方案 一个1小时的研讨会会做吗? https://github.com/blowdart/aspnetauthorizationworkshopworkshop 请注意,这并不是真正基于索赔的,因为这已经不再特别了. ASP.NET核心(现在的核心而不是Vnext)中的所有身份都是索赔身份. 其他解决方案 根据我的个人经验,通过正确解释索赔以及如何真正使用它们的方式几乎没有什么.因此,我将以示例分享我的解释.它使用Visual Studio 2015中创建的默认ASP.NET MVC核心项目. 这里要记住的重要事情是用户可以有一个或多个主张.他可以声称自己是"管理员",并具有与" bhail"等相等的"名称"等.因此,他们使用索赔一词的原因.有趣的是,索赔可以由ASP.NET应用程序甚至是从其他来源(例如Facebook,
0 2024-04-21
编程技术问答社区
淘宝网上有很多卖家,他们的产品都是在淘宝网上销售的。授权属性错误403
我在 asp.net core webapi 项目中工作,并创建了一个角色" admin" 并将其添加到我的用户中.但是,如果我以管理员的身份登录,则第一个方法将返回"这是admin!" ,但是第二种方法将返回错误403禁止. 如果我从授权属性中删除角色参数,一切都会好起来的.我不明白为什么我无法访问第二种方法,因为我的用户具有管理员角色. // Host/api/roles/getroles [Authorize] [HttpGet] public async Task> GetRoles() { var user = await _userManager.GetUserAsync(User); bool isAdmin = await _userManager.IsInRoleAsync(user, Roles.Admi
0 2024-04-21
编程技术问答社区
在ASP.Net核心中应用细粒度的权利限制
背景 在ASP.NET核心中应用颗粒右级限制的最佳方法是什么.我已经设置了身份验证和我的应用程序问题,即在一定时间后到期. 我的Web应用程序还利用了角色和权利,其中某个角色可以与一组权利相关联.我已经播种了权利并限制了对它们的访问,因为即使是管理员用户也无法更改,创建或删除任何(即仅阅读).另一方面的角色是动态的,尽管超级公给和管理员是固定的.任何具有超级应用访问角色的用户都有能力创建新角色并为该角色分配权利. 我要做的是根据这些权利限制对我应用程序中所有其他控制器的访问. 我正在考虑使用基于策略的授权,其中每项权利都将与特定策略相关联(即[Authorize(Policy = "delete users")]).然后,我将用户拥有的所有权利嵌入我在登录时发布的令牌中. 我不愿这种方式实施它,因为尽管权利可能会被硬编码,但如果我有大量权利,它们可能会/将会增加,那么我可能有点低效地嵌入所有的权利它们进入令牌. 是否更好地达到此级别的安全性? 解
0 2024-04-20
编程技术问答社区
对asp.net mvc中的认证非常非常困惑
我得出一个结论,我需要抛弃ASP.NET Membership(出于原因列表). 现在,我看到的唯一需要的是创建一个cookie(由Form Authentication完成),用于身份验证的自定义方法(完成),最后是基于它们是否登录或通过角色登录的验证. 我被困在最后一个. 我正在尝试覆盖Authorize(属性),但我不知道该怎么做.我查看了许多示例,每个示例似乎都与下一个示例不同.我不知道他们为什么这样做或我应该使用哪一个. 一些教程似乎在AuthorizeCore中进行身份验证,有些教程在OnAuthentication中进行. 有些使用一些AuthorizationContext的东西,然后称此基类. base.OnAuthorization(filterContext); 有些人似乎在其中进行了缓存. 我想要的是内置的所有功能,但只是连接到我的自定义表上.就像我要有自己的角色表一样.我需要告诉它在哪里,然后将东西拉入. 我也
2 2024-04-20
编程技术问答社区
我如何在ASP.NET Core中用HTTP Basic授权发送HTTP POST?
我正在尝试使用reddit api( https://github.com/我的ASP.NET Core MVC应用程序中的Reddit-Archive/reddit/wiki/oauth2 ),要获得一个令牌,我必须使用HTTP基本授权(用户名和密码是客户端ID和客户端ID和clastic of Client and clastion and clastion and clastion and ID和秘密).目前,我使用此代码: public async Task HttpPost(string uri, string value) { HttpClient httpClient = new HttpClient(); HttpResponseMessage httpResponseMessage = await httpClient.PostAsync(uri, new StringContent(value));
0 2024-04-20
编程技术问答社区
如何在.net核心应用程序中进行基于组的授权?
净核心应用程序.我的要求是添加基于小组的授权.我是Azure AD中的用户.我属于某些组名称,始于BR和AR.仅属于AR组的用户应该能够访问我的API.目前,我的客户端应用程序是Swagger,我只会通过Swagger击中API. 例如,在启动中,我可以拥有以下代码. services.AddAuthorization(options => { options.AddPolicy("AR-BitBucket-User", policyBuilder => policyBuilder.RequireClaim("groups", "6be4f534-dcf5-489e-b57d-c7bb46be8d6b")); }); 在控制器中, [Authorize("AR-BitBucket-User")] 在上述方法中
0 2024-04-20
编程技术问答社区
.NET Core中的多个OpenIDConnect授权
我在.net core 中具有多个OpenIDConnect授权的问题 我想实现的目标: 想象2个OpenID提供商OpenID-Main,OpenID特殊性;两个都返回ID令牌,角色等. 现在想象一下,大多数时间我都希望用户通过OpenID-Main登录,这很简单: .AddOpenIdConnect("Main", "Main", options => { options.Authority = "OpenID-Main-url"; options.ClientId = "OpenID-Main-d"; options.ClientSecret = "OpenID-Main-secret"; //some other options } 然后我只能使用 [授权(authenticationschemes =" main")] 效果很好 现在,对于某些类型的请求,我将要求用户登录其他提供商
0 2024-04-20
编程技术问答社区
为什么在我的自定义AuthorizationFilterAttribute中,OnAuthorization被调用了两次?
为什么OnAuthorization为我的直截了当AuthorizationFilterAttribute? 称为两次 public class ApiAuthenticateAttribute : AuthorizationFilterAttribute { public void override OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) { if(NotAuthorized()) throw new Exception(); } } 第一个调用堆栈 第二个通话堆栈 解决方案 问题是ninject.web.webapi.由于某种原因,它是两次注册过滤器.将软件包更新为最新(v 3.2.1)解决了问题. 其他解决方案 我已经在Webapiconfig.cs中注册了授权图: pu
0 2024-04-20
编程技术问答社区
AuthorizeAttribute和IAuthenticationFilter之间的区别
在ASP.NET Web API 2(OWIN)中,IAuthenticationFilter和AuthorizeAttribute>? 之间有什么区别 目前,我已经通过创建自己的AuthorizeAttribute来实施我的授权: public class IntegratedAuthorization : AuthorizeAttribute { protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext) { bool returnValue = false; if (actionContext.Request.Headers.Authorization != null) { if (actionContext.Request.Headers.Auth
0 2024-04-19
编程技术问答社区
单个项目中的Identityserver4和API
我有一个IdentityServer4 ASP.NET核心主机设置,用于 NOREFERRER ">资源所有者密码赠款; 在单独的ASP.NET核主机中使用JWT BEARER令牌和API,该主机具有我的API和两个Angular客户端. 身份验证和授权正在从我的两个角度客户到我的API. 现在,我需要在sidentityServer4主机中公开API,以便我可以从一个Angular客户端创建用户. 我已将身份验证和授权设置从API复制到我的IdentityServer4主机,但是,我无法获得身份验证. 在以下代码中,在API中,我可以在JWT.Authority ... line和第一个调用上设置一个断点,将在我的API中触发此断点,但在IndendityServer4主机中不会触发此断点. . 身份验证 services.AddAuthentication(IdentityServerAuthenticationDefaults.Authentication
0 2024-04-19
编程技术问答社区
在控制器构造函数中用User.Identity.Name定义一个用户
对于将要与用户帐户交互的操作,除了将该对象添加到" viewData [" theuser")之外,我还想创建一个" theuser"对象.称为. 如果用户登录,它将从数据库中获取用户的信息,如果不是,则" theuser"对象只会为null. 我尝试在控制器构造函数中访问" user.Identity.name",但在任何动作之前都没有创建它. 我正在查看自定义授权过滤器,但是这些不允许我创建" theuser"对象并将其存储在ViewData中. 这是我想完成的简短片段: [Authorize] public class HomeController : Controller { User TheUser; public HomeController() { TheUser = User.Identity.IsAuthenticated ? UserRepository.GetUser(User.Identity
0 2024-04-19
编程技术问答社区
从授权Handler(ASP.NET Core)进行自定义重定向
我正在使用向第三方服务提出API请求的身份验证中间件.然后,此中间件设置了授权Handler与IauthorizationRequirent和自定义策略一起处理的索赔. 中间件作品有效,我能够构建主张: context.User.AddIdentity(identity); // contains claims 我卡住的地方正在重定向到特定的URL(有针对我们需要重定向的自定义规则)从处理程序或属性中.从处理程序中,我尝试了: var mvcContext = context.Resource as Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext; mvcContext.Result = new RedirectToActionResult("login", "home", null); 但被忽略了;仅返回401. AuthorizeAttribute不再有攻击性,所以我也不能使用它...
0 2024-04-19
编程技术问答社区
ASP.NET WebAPI基本认证总是以401/未经授权的方式失败。
尝试使用基本身份验证来保护我的ASP.NET Web API-2,但始终出现错误: 401/Unauthorized Authorization has been denied for this request. 以下是我的控制器和AJAX请求代码段以及请求和响应标头. basicAuthenticationhandler.sendasync总是成功地运行: return base.SendAsync(request, cancellationToken); q:那么为什么它最终以401/未授权? 如果我从控制器操作中删除[授权],则可以使用任何安全性. 注意:因为这是一个跨域请求,所以我在服务器端启用了CORS. 我的身份验证处理程序 protected override System.Threading.Tasks.Task SendAsync(HttpRequestMessage reque
0 2024-04-18
编程技术问答社区
如何在ASP.NET CORE中为多个策略创建一个自定义的授权属性
我想授权操作控制器可以通过多个策略访问. .e.g: [Authorize([Policies.ManageAllCalculationPolicy,Policies.ManageAllPriceListPolicy]] public async Task Get(int id){} 非常感谢. 解决方案 对于多个策略,您可以实现自己的授权. osterizemultiplePolicyAttribute public class AuthorizeMultiplePolicyAttribute:TypeFilterAttribute { public AuthorizeMultiplePolicyAttribute(string policies,bool IsAll):base(typeof(AuthorizeMultiplePolicyFilter)) { Arguments = new objec
0 2024-04-18
编程技术问答社区
Isinrole返回false,即使在索赔中有角色
我正在从事索赔基础身份验证工作,而且工作正常. 现在,我想添加角色自动化. 我对用户有角色主张(例如" admin") 当调用isInrole()方法时,有一张检查是否可以查看是否 当前的用户有这个角色.在索赔意识申请中,角色 由应在 令牌.使用以下URI表示角色主张类型: http://schemas.microsoft.com/ws/2008/06/istentity/索赔/角色 //Include all claims //claims is List with all claims var id = new ClaimsIdentity(claims, "Cookies"); Request.GetOwinContext().Authentication.SignIn(id); 如果我检查用户是否扮演角色,我会得到错误.尽管我具有" admin"值的角色主张 User.IsInRole("Admin"); 还授权在我的API上属于
0 2024-04-18
编程技术问答社区
授权整个安全组在ASP.Net MVC中执行一个动作
I'd like to authorize users to perform specific actions within my controllers. I've found the ASP.NET tutorial which explains how to allow individual users to perform specific actions but can this be extended to security groups? For example, would everyone belonging to the "domain\group" security group have access to the GetSecrets action if the code looked like this: [Authorize(Users="domain\group")] public ActionResult GetSecrets() { return
0 2024-04-18
编程技术问答社区
HTTPClient在成功之前收到两个401(发送错误的令牌)。
我正在尝试使用HttpClient与自托管WebAPI客户端进行通信.客户端是使用以下代码创建的: HttpClientHandler clientHandler = new HttpClientHandler() { UseDefaultCredentials = true, PreAuthenticate = true }; var client = new HttpClient(clientHandler); 在服务器端我们设置: HttpListener listener = (HttpListener)app.Properties[typeof(HttpListener).FullName]; listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication; 在Startup文件中. 问题是我在处理请求之前获得了两个(或在预先验
0 2024-04-18
编程技术问答社区