コード例 #1
0
    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);
    }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }