IEnumerator TokenExample() { // Create authenticator using the IAM token options authenticator = new IamAuthenticator(apikey: "hF_mLVrdrTsSePRgAq4lfnFQUjeOhCdj1Wn3G-S2yWxA"); while (!authenticator.CanAuthenticate()) { yield return(null); } assistant = new AssistantService(versionDate, authenticator); assistant.SetServiceUrl("https://api.eu-gb.discovery.watson.cloud.ibm.com/instances/0d3d5a9f-cde8-4f3d-89ea-4f1ba026d930"); assistant.ListWorkspaces(callback: OnListWorkspaces); }
public ActionResult Login(BlogUser user, string returnUrl) { if (!ModelState.IsValid) { return(View(user)); } var authenticator = new Authenticator(); if (authenticator.CanAuthenticate(user)) { authenticator.Authenticate(user); } else { return(View("~/Views/Shared/Error.cshtml")); } ModelState.AddModelError("", "Bad Email or Password"); Session["user"] = user; return(View("Logged", user)); }
static void Main(string[] args) { // configures admin account which will be used for registrations // all values can stay the same for you except database. If you create DB with different name you need to change it var server = "localhost"; var database = "authdb"; var adminUsername = "******"; var adminPassword = ""; Configurator.ConfigureAdminAccount(server, database, adminUsername, adminPassword); // ------------ some generic example ------------- var user = new User() { Username = "******", Password = "******" }; var authenticator = new Authenticator(); authenticator.Register(user); // should be true Console.Out.WriteLine(authenticator.CanAuthenticate(user)); authenticator.Delete(user.Username); // should be false Console.Out.WriteLine(authenticator.CanAuthenticate(user)); // ---------------- simple blog example ------------ var user1 = new BlogUser() { Username = "******", Password = "******", FullName = "Johcqvn Doek" }; var user2 = new BlogUser() { Username = "******", Password = "******", FullName = "Janqecv Doek" }; authenticator.Register(user1); // don't run this twice, it will throw exception that same user already exists authenticator.Register(user2); var contextProvider = new MysqlContextProvider(); // we have to add blog user after authenticator.Register() because we need that user to authenticate the transaction using (var context = contextProvider.CreateContext <BlogContext>(user1)) // authenticated by user1 { context.BlogUsers.Add(user1); context.SaveChanges(); } using (var context = contextProvider.CreateContext <BlogContext>(user2)) // authenticated by user2 { context.BlogUsers.Add(user2); context.SaveChanges(); } // this will set user1 as the default for all following transaction authentications if (!authenticator.Authenticate(user1)) { throw new InvalidOperationException("This should never happen because user was registered"); } using (var context = contextProvider.CreateContext <BlogContext>()) // authenticated by user1 as default { // Table in DB have to be already created at this point. It's better to do it by hand, then to use strategies, // because they drop the whole DB which we don't want since users already have access rights set to the given DB context.BlogUsers.Attach(user1); // we need to attach user1 because otherwise it is detached entity (EF) doesn't know about it and new one would be created context.BlogPosts.Add(new BlogPost() { Title = "Some title", BlogUser = user1 }); context.SaveChanges(); } using (var context = contextProvider.CreateContext <BlogContext>(user2)) // explicitly authenticated by user2 { foreach (var post in context.BlogPosts.Include("bloguser")) { Console.Out.WriteLine($"{post.BlogUser.FullName} : {post.Title}"); } } // from now on, user2 will be used as default for authentication authenticator.SetUser(user2); }