Tag: 身份validation

MongoDB C#驱动程序检查身份validation状态和角色

这是我使用MongoDB身份validation机制登录MongoDB的代码。 try { var credential = MongoCredential.CreateMongoCRCredential(“test”, “admin”, “123456”); var settings = new MongoClientSettings { Credentials = new[] { credential } }; var mongoClient = new MongoClient(settings); var _database = mongoClient.GetDatabase(“test”); var collection = _database.GetCollection(“book”); var filter = new BsonDocument(); var document = collection.Find(new BsonDocument()).ToList(); } catch (Exception ex) { } 当我们在Credential中输入错误的用户名/密码时,如何检查登录结果? 目前我无法检查它,我必须等待collection.Find().ToList()抛出一个TimeoutException ,并在此上下文中它的身份validation失败。 我们必须创建一个CRUD来检查身份validation结果(通过捕获TimeoutException […]

Mvc,授权反弹授权用户

我试图将MVC 5网页的一部分限制为某个Active目录组的用户,但[Authorize]属性(在控制器上)阻止登录用户。 我的登录页面代码如下所示: public class AccountController: Controller { [AllowAnonymous] public ActionResult Login(string returnUrl) { ViewBag.ReturnUrl = returnUrl; return View(); } // POST: /Account/Login [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid) { ActiveDirectoryHelper ad = new ActiveDirectoryHelper(); if (Membership.ValidateUser(model.UserName, model.Password)) { if (ad.CheckGroupMembership(model.UserName)) { FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > […]

捕获登录事件,以便我可以缓存其他用户信息

我已经构建了一个Web应用程序。 当我建立它时,我勾选了“组织账户” 它运行良好 – 我使用我的Office 365帐户登录, User.Identity.Name包含电子邮件地址 此应用程序是旧的ASP Classic应用程序的替代前端。 该应用程序有一个我需要使用的现有安全表。 我想使用电子邮件地址查找此表中的记录以获取 用户的内部数据库密钥(因此我可以在数据库调用中使用它) 用户的安全级别(授权) 我想在validation后立即查看,并将这两个值保存到Session以供稍后参考 我有一个现有的方法来执行所有这些查找和缓存。 我实际上通过从_LoginPartial.cshtml视图调用它来实现它,但显然从视图中触发这种事情是不正确的 这是查找和缓存用户信息的代码。 现在这是在AccountController.cs但它不一定是 private Boolean GetAdditionalUserInfo() { // if authentication info is saved, don’t go find it if (Session[“UID”] != null) return true; // get the db employee id from the database and save it to the session var r […]

ConfidentialClientApplication AcquireTokenSilentAsync始终失败

我正在尝试对微软权限使用OpenIdConnectAuthentication。 我能够进行身份validation,但是当尝试获取访问令牌时,调用失败,希望我重新进行身份validation,我这样做。 我好像从来没有拉过正确的代币。 以下是获取访问令牌的代码。 public async Task GetUserAccessTokenAsync() { string signedInUserID = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value; //string signedInUserID = User.Identity.GetUserId(); tokenCache = new MSALSessionCache( signedInUserID, HttpContext.Current.GetOwinContext().Environment[“System.Web.HttpContextBase”] as HttpContextBase); var cachedItems = tokenCache.ReadItems(appId); // see what’s in the cache ConfidentialClientApplication cca = new ConfidentialClientApplication( appId, redirectUri, new ClientCredential(appSecret), tokenCache); try { AuthenticationResult result = await cca.AcquireTokenSilentAsync(scopes.Split(new char[] { ‘ […]

我可以绕过MVC应用程序内的WebAPI控制器的组织身份validation吗?

我有一个MVC5,EF6应用程序,它使用组织身份validation(Azure AD),除了一件事,一切正常。 WebAPI控制器需要处理来自未经身份validation的客户端的请求。 客户端通常是发出AJAX请求的Android设备。 在我将组织身份validation添加到我的MVC应用程序之前,我的WebAPI控制器正在被调用并正常运行,所以我知道我的路由是正确的。 现在我添加了组织身份validation,不再调用我的WebAPI控制器,客户端的AJAX请求超时。 我知道有[Authorize]等属性可以指定对控制器/方法的访问权限,但在使用组织身份validation时,似乎没有调用没有[Authorize]属性的WebAPI控制器。 我的问题是,我可以标记我的WebAPI控制器以允许来自未经身份validation的客户端的请求,如果是这样,我该怎么办? 非常感谢。

使用asp.net Identity进行Azure AD身份validation以进行授权

我试图寻找互联网,但看不出我是如何实现我被要求的。 这是我的企业应用程序,它使用Asp.net Identity进行基于表单的身份validation。 我已将用户和角色与群组一起扩展,以便在我的代码中提供授权。 (注意:不使用任何组/角色指令)。 现在我被要求查看更改代码以适应Azure Active Directory身份validation的可能性。 我试着阅读如何注册应用程序,将用户发送到Azure网站进行身份validation,获取令牌等等。但是我仍然坚持’之后的事情?’ 我已经过身份validation的用户如何使用我现有的Asp.net Identity模型,其中用户存储在sql数据库中。 如何使用此标记来关联现有用户。 此外,当我将项目更改为允许Azure AD时,它会删除Aspnet.Identity包,因为它与Azure AD不兼容!! 我甚至尝试手动保存两个软件包,我得指出用户被发送到Azure上进行身份validation的位置,转移回主页并再次登录Azure AD以永无止境的循环。 总结问题,我如何从AADvalidation用户并继续使用现有的角色和组授权。 编辑:我尝试创建单独的Web服务,它将validation用户身份并发送JWT令牌。 哪个有用,如果我直接在浏览器上调用它,但是,当我尝试从我的网络应用程序调用此服务时,我得到了奇怪的错误 Application with identifier ‘a2d2—————‘ was not found in the directory azurewebsites.net 这里奇怪的部分是目录的名称是’azurewebsites.net’而不是我正在使用的默认目录。 更新这里是抛出错误的代码 public async Task Login(string returnUrl) { try { // get the access token AuthenticationContext authContext = new AuthenticationContext(authority, new TokenCache()); var clientCredential […]

在自定义AuthorizeAttribute中获取Post请求参数

我用它来从输入流中获取请求参数。 POST在请求正文中使用JSON。 在我的onAuthorize函数中,它onAuthorize了AuthorizeAttribute 。 它确实给了我请求体参数,但它清空了流,因此控制器不接收任何请求参数: public override void OnAuthorization(AuthorizationContext filterContext) { filterContext.HttpContext.Request.InputStream.Length() //17 here string jsonPostData; using (var stream = filterContext.HttpContext.Request.InputStream) { stream.Position = 0; using (var reader = new System.IO.StreamReader(stream)) { jsonPostData = reader.ReadToEnd(); } } filterContext.HttpContext.InputStream.Length() //0 here filterContext.HttpContext.Request.InputStream.Position = 0; // still 0 base.OnAuthorization(filterContext); //so when the request reaches controller its empty […]

validationCookie

我正在为我的Web应用程序编写一个数据库身份validation系统,这是在ASP.NET MVC中编写的。 当有人授权时,应将其用户名保存在cookie中。 使用HttpResponse.Cookies`来保存其值为用户名的cookie是否安全? 难道不是可以伪造的吗? 仅保存用户名…这是正确和安全的方式吗? 或者我应该保存整个User对象(如果这实际可能)? 谢谢你,对不起我的英语。

如何使用Facebook(或其他ID)登录我的asp.net应用程序?

像SO这样的网站如何让您通过Facebook,OpenID,Google,Blogger,Twitter等进行身份validation? 我正在编写一个ASP.NET(C#)站点,除了提供任何其他站点的常规普通用户名/密码之外,我还希望能够接受这样的登录。 我从哪里开始?

Facebook .NET SDK:如何使用ASP.NET MVC 2进行身份validation

我试图掌握Facebook SDK,同时从ASP.NET表单转换到MVC(最后)。 所以请耐心等待.. 我创建了两个控制器动作: 当用户单击表单上的FB登录按钮时,将取消FBLogon。 然后他被重定向到FB登录页面。 之后,他被送回FBAuthorize页面,该页面应该解析返回的URL以获取访问令牌。 我有类似的东西: HTTP://本地主机:5000 /帐户/ FBAuthorize#=的access_token 199143326771791 | 827213759889396d5408fee6-100001815992604 | BmYchAOMqSoZ2L0TYgCrtpoKP3M&expires_in = 0 我看到的问题是,当access_token在#后面传递时,asp.net无法在服务器上解析它。 我做的事情基本上是错误的吗? 代码如下: public ActionResult FBLogon() { var settings = ConfigurationManager.GetSection(“facebookSettings”); IFacebookApplication current = null; if (settings != null) { current = settings as IFacebookApplication; if (current.AppId == “{app id}” || current.AppSecret == “{app secret}”) { return […]