public async Task ParseJsonFull()
        {
            var tempConfigFile = new FileInfo(Path.GetTempFileName());

            File.WriteAllText(tempConfigFile.FullName, @"{
				""ClientId"": ""testoktaid"",
				""OktaDomain"": ""https://dev-00000.oktapreview.com"",
				""RedirectUri"": ""com.test:/redirect"",
				""PostLogoutRedirectUri"": ""com.test:/logout"",
				""Scope"": ""test1 test2 test3"",
				""AuthorizationServerId"": ""test1"",
				""ClockSkew"": 90
				}"                );

            OktaConfig config = await OktaConfig.LoadFromJsonFileAsync(tempConfigFile.FullName);

            Assert.Equal("testoktaid", config.ClientId);
            Assert.Equal("https://dev-00000.oktapreview.com", config.OktaDomain);
            Assert.Equal("com.test:/redirect", config.RedirectUri);
            Assert.Equal("com.test:/logout", config.PostLogoutRedirectUri);
            Assert.Equal("test1 test2 test3", config.Scope);
            Assert.Equal((IEnumerable <string>)(new string[] { "test1", "test2", "test3" }), config.Scopes);
            Assert.Equal("test1", config.AuthorizationServerId);
            Assert.Equal(TimeSpan.FromSeconds(90), config.ClockSkew);

            try
            {
                tempConfigFile.Delete();
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Unable to clean up temp file used for testing OktaConfig JSON file parsing at " + tempConfigFile.FullName + Environment.NewLine + ex.ToString());
            }
        }
Esempio n. 2
0
 public static bool ClientIsPopulated(this OktaConfig oktaConfig)
 {
     return(oktaConfig != null &&
            !string.IsNullOrWhiteSpace(oktaConfig.Domain) &&
            !string.IsNullOrWhiteSpace(oktaConfig.ClientId) &&
            !string.IsNullOrWhiteSpace(oktaConfig.ClientSecret));
 }
Esempio n. 3
0
        private async void FabOnClick(object sender, EventArgs eventArgs)
        {
            View view = (View)sender;

            OidcClient client = new OidcClient(this, await OktaConfig.LoadFromXmlStreamAsync(Assets.Open("OktaConfig.xml")));
            var        res    = await client.SignInWithBrowserAsync();

            res.AccessToken.Clone();
        }
Esempio n. 4
0
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.SetFlags("CollectionView_Experimental");
            global::Xamarin.Forms.Forms.Init();
            LoadApplication(new T());
            bool result = base.FinishedLaunching(app, options);

            OktaContext.Init(new OidcClient(Window.RootViewController, OktaConfig.LoadFromPList("OktaConfig.plist")));

            return(result);
        }
Esempio n. 5
0
        public UserService(IRepository <Entities.Users.User> userRepository,
                           IOptions <OktaConfig> oktaOptions,
                           IMapper mapper,
                           ILogger <UserService> logger)
        {
            _oktaConfig = oktaOptions.Value;

            _oktaClient = new OktaClient(new OktaClientConfiguration
            {
                OktaDomain = _oktaConfig.OktaDomain,
                Token      = _oktaConfig.ApiToken
            });
            _userRepository = userRepository;
            _mapper         = mapper;
            _logger         = logger;
        }
Esempio n. 6
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            OktaContext.Init(new OidcClient(this, OktaConfig.LoadFromXmlStream(Assets.Open("OktaConfig.xml"))));
            // TODO: change this to use .AddSignXXXCompletedListener methods.
            OktaContext.Current.SignInCompleted  += (sender, args) => Shell.Current.GoToAsync("//ProfilePage");
            OktaContext.Current.SignOutCompleted += (sender, args) => Shell.Current.GoToAsync("//ProfilePage");

            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);

            global::Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new OktaApp());
        }
Esempio n. 7
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            // Perform any additional setup after loading the view, typically from a nib.

            OktaConfig config = OktaConfig.LoadFromPList("OktaConfig.plist");

            this.configTestView.Text = $"Domain: {config.OktaDomain}\n" +
                                       $"ClientId: {config.ClientId}\n" +
                                       $"RedirectUri: {config.RedirectUri}\n" +
                                       $"PostLogoutRedirecturi: {config.PostLogoutRedirectUri}\n" +
                                       $"Scope: {string.Join(", ", config.Scopes)}\n" +
                                       $"ClockSkew: {config.ClockSkew.ToString()}\n";

            client = new OidcClient(this, config);
        }
Esempio n. 8
0
 public static bool DomainIsPopulated(this OktaConfig oktaConfig)
 {
     return(!string.IsNullOrWhiteSpace(oktaConfig?.Domain));
 }
Esempio n. 9
0
        public static IServiceCollection AddOktaMvcAuthentication(this IServiceCollection services, OktaConfig oktaConfig)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (oktaConfig.ClientIsPopulated())
            {
                services.AddAuthentication(options =>
                {
                    options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                    options.DefaultSignInScheme       = CookieAuthenticationDefaults.AuthenticationScheme;
                    options.DefaultChallengeScheme    = OktaDefaults.MvcAuthenticationScheme;
                })
                .AddCookie()
                .AddOktaMvc(new OktaMvcOptions
                {
                    OktaDomain            = oktaConfig.Domain,
                    ClientId              = oktaConfig.ClientId,
                    ClientSecret          = oktaConfig.ClientSecret,
                    AuthorizationServerId = oktaConfig.AuthorizationServerId ?? ""
                });
            }

            return(services);
        }