Use MongoDB in Your C# ASP.NET Apps
![Use MongoDB in Your C# ASP.NET Apps](/assets-jekyll/blog/featured/okta-dotnet-half-f5e3132ffada27748256d442fd5ba43c70ffadff81839a39db4889dd3edf5edc.jpg)
MongoDB is a document database. Instead of storing data in tables and rows, you store documents in a structure very similar to objects in the memory of your application. The schema is flexible and dynamic. You don’t need to define all fields upfront. Some MongoDB tutorials define model classes in C# and show how to read from and write to the database with them. This post takes a different approach, which also demonstrates how flexible...
Build a Secure REST Application Using Jersey
![Build a Secure REST Application Using Jersey](/assets-jekyll/blog/featured/okta-java-short-headphones-0cb6fa5f73c23479ca00f96af6f20e5d0711d587cdab57b89d314f3b7629fb35.jpg)
REST is one of the most used architectural styles when it comes to developing web services. In Java, we have the JAX-RS specification that defines how to create a RESTful application. To show the power of the spec, Jersey, the reference implementation of JAX-RS was created. Building JAX-RS endpoints only requires adding annotations to your code. Keep reading to see how easy it is! In this tutorial you’ll create a TODO list service that will...
Add Docker to Your Spring Boot Application
![Add Docker to Your Spring Boot Application](/assets-jekyll/blog/featured/okta-java-short-tile-books-mouse-0db863b0538c00ed70cfb39c933700aacf168bfba86c28fa16cfe87a5d94831d.jpg)
Docker enables you to deploy a server environment in containers. A container is a standardized unit of software that assembles code, runtime, dependencies, settings, and initialization in a single package that you can run reliably from one computing environment to another. Deploying your app as a Docker container is not hard, and can alleviate a lot of problems that you may encounter when moving your app around the multiple environments it has to go, like...
Build a CRUD API with Java and MongoDB
![Build a CRUD API with Java and MongoDB](/assets-jekyll/blog/java-mongodb-crud/java-mongodb-c2f2c9f7381ca9b4f1541411fb9f30c0afdc4b0bf0bb6cd58294661048e49423.png)
This tutorial leverages two technologies that are commonly used to build web services: MongoDB and Java (we’ll actually use Spring Boot). MongoDB is a NoSQL database, which is a generic term for any non-relational databases and differentiates them from relational databases. Relational databases, such as SQL, MySQL, Postgres, etc…, store data in large tables with well-defined structures. These structures are strong and tight and not easily changed or customized on a per-record basis (this structure...
Use Okta Token Hooks to Supercharge OpenID Connect
![Use Okta Token Hooks to Supercharge OpenID Connect](/assets-jekyll/blog/token-hooks/crochet-db4e30d48e9ace121b674e3b39348b41bc39ca43a52c20b47c01840a629b16c3.png)
OpenID Connect (OIDC) and OAuth 2.0 are already recognized as powerful tools for incorporating authentication and authorization into modern web applications. Okta has enhanced the capabilities of these standards by introducing our Inline Hooks feature. There are a number of different types of inline hooks that Okta supports. In this post, I focus on hooks that allow you to patch information into the tokens you get back from Okta via OIDC and OAuth. You’ll first...
Five Tools to Improve Your Java Code
![Five Tools to Improve Your Java Code](/assets-jekyll/blog/five-tools-improve-java/stop-bad-code-f043b01bdc185e0e1f0d38af02b83d6917bc8d8431ae9d6903b90cbbf314e984.png)
Writing quality code takes practice. To write better code, you need to know what should improve. Code quality and what makes code easy to read are very subjective; ask five different developers, you will get six different answers. For this post, I’ll avoid most of the subjective and focus on ways to detect real issues and potential bugs. I wrote some intentionally bad code to demo these tools (which was harder than you might think)....
Multi-Factor Authentication Sucks
![Multi-Factor Authentication Sucks](/assets-jekyll/blog/mfa-sucks/mfa-circle-of-life-34053ce2bdd02ebb2188c86fbaddb8c5ccfa07ff2c1afca23a515bf00e6a4558.png)
For the last seven years or so I’ve been building developer tools to help make user authentication and authorization simpler and more secure. When I’m not building tools to help secure web applications, I’m often writing articles, creating videos, and educating developers on web security best practices. I care a lot about web security. With that said (and I almost feel guilty admitting this), I think multi-factor authentication (MFA) sucks. It’s slow, annoying, frustrating, and...
Build Components in JavaScript Without a Framework
![Build Components in JavaScript Without a Framework](/assets-jekyll/blog/featured/okta-node-bottle-headphones-b2a535cca49cbea55ba6e01c3c5c3edc73b35d3b056977588b67ec764878a9dc.jpg)
Everyone has their favorite framework, and most developers aren’t shy about sharing those opinions. I guarantee you right now two developers are arguing about their favorite frameworks. Personally, I’ve been using JavaScript frameworks since JQuery was introduced. I’ve written applications for clients using Knockout.js, Angular 1+, React (since before v15), and have made some small learning apps using Stencil and Vue. One of the great things that all of these frameworks bring to the table...
Use Sass with React to Build Beautiful Apps
![Use Sass with React to Build Beautiful Apps](/assets-jekyll/blog/react-sass/sass-react-fa644d1094e108fd0fa40e95db30309192f80753927e7767d324ccfc58f8351e.png)
When you are developing web applications with React, you know that writing the JavaScript code is only half of the story. The other half is implementing the design using style sheets. When your application becomes larger, using plain CSS style sheets can become tedious and unmaintainable. Sass is one of the most popular alternatives to CSS. It extends the CSS language with variables, mixins, and many other features. It also lets you divide up the...
Semantic Versioning Sucks! Long Live Semantic Versioning
![Semantic Versioning Sucks! Long Live Semantic Versioning](/assets-jekyll/blog/semantic-versioning/semantic-versioning-040e4798bed354c573ed189b61ff671d828338366437585f8fd31b10f9913228.png)
Hello, fellow developers. Have you ever been bitten by transitive dependencies changing in minor releases? I have. Semantic versioning is supposed to prevent this, and sure, semantic versioning is a great idea at its core, but when its guidance is not followed it sucks. People release minor versions without backward compatibility all-the-time. TL;DR? Semantic versioning sucks because humans get involved. In the early days, I don’t recall having much of a problem with dependencies and...