Angular Security Masterclass (with FREE E-Book)

Practical Guide to Angular Security - Add Authentication / Authorization (from scratch) to an Angular / Node App

4.33 (1312 reviews)
Udemy
platform
English
language
Web Development
category
Angular Security Masterclass (with FREE E-Book)
12,745
students
8 hours
content
Apr 2024
last update
$84.99
regular price

What you will learn

Code in Github repository with downloadable ZIP files per section

Get a solid foundation in Web Security Fundamentals

Perform the attacks yourself manually, in order to fully understand them

Understand and Defend an Application against common security attacks, such as Dictionary Attacks, Cross-Site Request Forgery, etc.

Understand JWT in-depth, including the multiple signature types

Design and Implement Application Authentication and Authorization from scratch

Know how to add Authentication to an Angular Application using JWTs (and traditional Server Sessions)

Know how to add RBAC (Role based Access control) Authorization to an Angular application

Why take this course?

The course is an Web Application Security Fundamentals Course, where the application will use the Angular/Node stack.

All the server code is in Typescript, but the security concepts explained in it are applicable to other technology stacks.

This course includes an auxiliary Ebook - The Typescript Jumpstart Ebook

We will use several MIT licensed Angular and Node packages from Auth0 (that you could use in your application), and we will also include a demo of how to use Auth0 for doing Application User Management.

Its important to realize that this is NOT an Auth0 specific course. Auth0 will be the source of a couple of open source packages we will use, and will be doing a quick demo of it to show how JWT makes it simple to delegate authentication to a third-party system, which could be developed in-house as well.

Security - A Fundamental Step in a Software Development Career

Security is probably the number one advanced topic that Software Developers are expected to master when going forward in their software development careers.

Security knowledge is hard to come by but its essential for advancing to more senior software development positions, like for example Application Architect or similar.

Learning Web Security Fundamentals, knowing how to design an application for security, and knowing how to recognize and fix security issues is an essential skill for a senior developer.

But the problem is that security knowledge is orthogonal to most other topics and it typically takes years to learn.

The good news is that once you have it, Security knowledge has a much longer shelf live than most software development knowledge in general.

Most of the vulnerabilities and fixes that you will learn in this course were useful 10 years ago, and will (very likely) still be useful 10 years from now - Angular and Node are just an example of one stack, to make the course examples more practical.

Security is seen as something really hard to master - this is actually not the case! Application Security is much more approachable than you might think, depending on how you learn it.

What Is The Best Way To Learn Security in a Fun and Practical Way?

Here is what we will do: we are going to take the skeleton of a running application that has no security yet, and we are going to secure the application step-by-step.

Using a couple of MIT packages from Auth0 (that you would be able to use in any project), we are going to implement the Sign-Up and Login functionality from scratch, and because security cannot be enforced only at the client-side, we will implement both the frontend in Angular and the backend in Node.

As we secure the application, and we are going to periodically attack the application many times during the course, to prove that the vulnerabilities are real!!

By doing so, we will learn along the way the fundamentals of Authentication and Authorization, we will become familiar with common vulnerabilities like Dictionary Attacks, CSRF and others, and we will get familiar with commonly used cryptographic tools like Hashing, Salting, JWT, password storage recommendations and more.

Please don't be intimidated by these concepts: The focus in this course will not be on the internals of each of the cryptographic tools that we will use, but instead on understanding on a high-level what problems do these tools solve, when to use each and why.

We will also learn how to design our application for security, and we will learn how in many situations application design is ou best defense.

Course Overview

We will start at the beginning: we will see the proper way of doing User Management and Sign Up: we will learn how to store passwords in a database, and we will introduce cryptographic hashes in an approachable way.

Once we have the Sign-Up functionality in place, we will implement Login and understand the need for a temporary identity token. Our first implementation will be stateful login, where the token is kept at the server level.

And at this point we could think we have authentication in place, but we decide to prepare our application for scalability, so we decide to try a JWT (JSON Web Tokens) based approach, because we know that this is what services like Firebase and Auth0 use.

We will use a couple of Auth0 packages to quickly refactor our Login to be JWT based, and learn the advantages of using JWT, and some potential disadvantages as well.

We will then see how its also possible to do Authentication using a third-party JWT-based service like Auth0, effectively removing all authentication logic from both our codebase and our database, and delegating it to a third-party service.

Note that this Auth0-specific part is only a small part of the course, and its main goal is to show how its possible at an enterprise level to delegate authentication to a centralized service, whithout having to introduce direct communication between applications and the centralized authentication service.

This means that if you can't use Auth0 at your company, you can apply the same design principles and design a JWT-solution that delegates authentication to a centralized server behind the firewall.

We will then cover how to do UI-level role-based functionality in Angular using the Angular Router, and a custom directive for showing or hiding certain parts of the UI depending on the role of the user. We will learn why the Router cannot enforce actual security.

We will also talk about server-side Authorization, and we will implement a commonly needed security-related Admin Level functionality: The Login As User service, that allows an admin to login as any user, to investigate a problem report. We can see why we would need to secure this functionality!

At the end of all these vulnerabilities and security fixes, we will have a well secured application and we will have learned a ton of security-related concepts along the way in a fun and practical way!

What Will you Learn In this Course?

With this course, you will have a rock-solid foundation on Web Application Security Fundamentals, and you will have gained the practical experience of applying those concepts by defending an application from a series of security attacks. You will have done so by actually performing many of the attacks!

You will have learned these concepts in the context of an Angular/Node application, but these concepts are applicable to any other technology stack.

You will learn what built-in mechanisms does Angular provide to defend against security problems, and what vulnerabilities it does NOT defend against and why.

You will be familiar with best practices for password storage, custom authentication service design and implementation, you will know the essentials about cryptographic hashes, be familiar with JWT and several commonly used open source Auth0 packages.

You will be familiar with the following security vulnerabilities: Dictionary attacks, identity token highjacking techniques, the browser same-origin policy, how to combine cookies with JWTs and why, Cross--Site Request Forgery or CSRF, common design vulnerabilities, and more.

You will know common practical solutions for securing both enterprise and public internet applications, such as how to use JWT to delegate authentication to a centralized service, which could be Auth0 or a in-house developed service that follows similar principles.

You will know how to implement UI-level authorization and use client-side constructs like Router guards to implement it and even build your own authorization-related UI directives.

You will also learn about server side authorization, and how to implement a commonly needed backend service that is only accessible to Admins - Login As User.

What Will You Be Able to do at the End Of This Course?

This course could help you take your development career to a more senior level, where the knowledge about web application security is essential and a key differentiating factor.

If you are a private internet business owner or thinking of launching your own platform, this course will contain most of what you need in practice to secure your own online platform in a robust and effective way.

With this course, you will have the knowledge necessary for evaluating many third-party security-related solutions, and you will know where to look for vulnerabilities in your application.

You will be able to understand most application-level vulnerability reports that come out of security audits done by third party companies, and you will be able to understand and fix the most commonly reported problems.

Content

Introduction

Angular Security Course Helicopter View
Recommended Software Versions
The Typescript Jumpstart Ebook
Installing Git, Node, NPM and Choosing an IDE
Installing The Lessons Code - Learn Why Its Essential To Use NPM 5
How To Run Node In TypeScript With Hot Reloading
Guided Tour Of The Sample Application

Sign Up Service - Initial Client and Server-Side Implementation

Client Side Authentication Service - API Design
Client Authentication Service - Design and Implementation
The New Angular HTTP Client - Doing a POST Call To The Server
User Sign Up Server-Side Implementation in Express

Password Storage - Hashing and Salting

Introduction To Cryptographic Hashes - A Running Demo
Some Interesting Properties Of Hashing Functions - Validating Passwords
Learn Offline Dictionary Attacks - Why Use Cryptographic Salting?
Password Key Derivation Functions and The Node Crypto Module
Using the Argon 2 Hashing Function In Our Sign Up Backend Service
How To Implement a Password Policy
Displaying Client-Side Password Validation Errors - What's Next?

User Session Management

Switch Branches And User Session Management Section Introduction
Node Util Promisify - How to Convert Callback Based APIs to Promise-based
Introduction To Node Async Await - Creating a User Session Id
Modeling a User Session - Classes Or Interfaces?
Browser Cookies - How To Use Them For User Session Management
Attack Scenario - User Identity Theft Attack Using A Third-Party Server
How To Better Protect The Session Id Using HTTP Only Cookies
HTTPS Secure Cookies - Running the Angular CLI in HTTPS Mode
Client-Side User Session Management - Retrieve User Data From Session
An Ancient Vulnerability - JSON Hijacking, Securing REST Endpoint
Implementing Logout - Destroying The User Session
User Login - Step-by-Step Implementation
Finish Login Functionality and Section Conclusion

Introduction To JSON Web Tokens

JSON Web Tokens - Section Introduction
Creating Your First JWT - What Does It Look Like?
JSON Web Tokens In a Nutshell
JSON Web Tokens In Detail - The Header and the Payload
JWT Signature With HS256 - How Does It Work? Learn What is an HMAC Code
JWT Signature With RS256 - Learn The Advantages Compared to HS256
Creating a JWT User Session - Setting Subject and Expiration

JWT In Practice - Step-by-Step Authentication With JSON Web Tokens

User Sign Up With JWT - Learn How To Combine Cookies and JWTs
Server-Side User Identification Via a Custom Express Middleware
User Retrieval Express Middleware - Error Handling With Async Await
Finishing The Implementation Of User Identification Middleware
Backend JWT-based Security Using an Express Middleware
JWT-based Authentication - Section Conclusion and What's Next

CSRF - Cross Site Request Forgery

Understanding CSRF - Step-by-Step Attack Simulation
CSRF In Detail - Understanding Attack Limitations
Implementing the CSRF Double Submit Cookie Defense - Server Implementation
How To Defense Our Application Against CSRF - Client And Server Defenses

JWT-based Authentication With Auth0

Auth0 Section Introduction - Using JWTs to Delegate Authentication To 3rd Party
Integrating a 3rd Party Authentication Provider - Auth0
Setting Up an Auth0 Externally Hosted Login Page
How does Auth0 Authentication Work? Logging In a User
Receiving The Auth0 JWT at Application Startup with parseHash
Storing the Auth0 JWT In Local Storage
Adapting the UI To the User Login Status
Angular HTTP Interceptor - Build an Authentication Interceptor
JWT Authentication with express-jwt and JSON Web Key Set - Backend Design
Auth0 JWT-based Authentication - Backend Implementation
User Sign Up -Requesting Permission to Use Users Email
User Signup and User Preferences - Frontend Implementation
User Signup and User Profile - Server-Side Implementation
Section Summary - The Main Benefit of JWTs

RBAC Role-Based Authorization

RBAC Role-Based Authorization - Section Introduction
Setting Up The RBAC Solution - Adding Roles to our JWT
Angular RBAC Authorization - Solution Overview
Backend Express Authorization Route - Design Overview
Backend Express Authorization Route - Implementation and Demo
The Admin Login As User Backend Service
UI RBAC Authorization With The rbacAllow Structural Directive
The rbacAllow Structural Directive - Final Implementation and Demo
Authorization Router Guard - Initial Implementation
Authorization Router Guard Completed - Configuring a Factory Provider

Conclusion

Other Courses
Bonus Lecture
Conclusion and Key Takeaways

Screenshots

Angular Security Masterclass (with FREE E-Book) - Screenshot_01Angular Security Masterclass (with FREE E-Book) - Screenshot_02Angular Security Masterclass (with FREE E-Book) - Screenshot_03Angular Security Masterclass (with FREE E-Book) - Screenshot_04

Our review

--- ## **Course Review: Web Application Security Masterclass (With Angular)** ### **Overview** The **"Web Application Security Masterclass (With Angular)"** course by Vasco, available on the Angular University platform, has garnered a global course rating of *4.33*, with all recent reviews consistently pointing to a well-structured and informative learning experience. The course covers a wide range of security practices for web development, with a focus on both frontend (Angular) and backend security measures. ### **Pros** - **Comprehensive Security Coverage:** The course provides a thorough understanding of various security aspects, including authentication, authorization, encryption, and protection against common threats like CSRF attacks. - **Clear Teaching Style:** Vasco's teaching style is commended for being clear, concise, and easy to follow, making complex concepts accessible to learners. - **Real-World Application:** The course includes practical examples and real-world scenarios that help learners understand how to apply security principles in actual development projects. - **Robust Content:** Despite some criticisms about the Angular focus, the content is considered robust and valuable for full-stack developers looking to enhance their security knowledge. - **Community Engagement:** The course has an active community, with learners sharing their experiences and offering help with challenges they face while following along with the code examples. ### **Cons** - **Outdated Content:** Some reviews mention that the course content has not been updated to reflect the latest versions of Angular and Node.js, which can lead to compatibility issues with current development environments. - **Misleading Course Title:** The title of the course might be misleading as the backend (Node/Express) content is quite substantial, and the Angular specific content is less than what one might expect from a course named "Web Application Security Masterclass (With Angular)." - **Repository Management Issues:** There are concerns regarding the state of the course's GitHub repository, with branching issues leading to confusion as some topics within the course are not fully implemented in the provided code examples. - **Angular Version Specificity:** Some learners encountered difficulties because their local development environment did not match the course's specified setup, particularly due to Angular version deprecations. ### **Suggestions for Improvement** - **Update Course Material:** Regular updates to the course content to include the latest versions of technologies used will enhance the learning experience and reduce compatibility issues. - **Improve Repository Quality:** Ensure that the GitHub repository is well-maintained, with all topics fully implemented, to facilitate a smoother code-along experience for learners. - **Rename Course Title:** Adjusting the course title to reflect the broader focus on full-stack security, rather than solely on Angular, would set more accurate expectations for potential students. - **Include Advanced Content:** Incorporating advanced security topics and features like Auth1 and Auth2 would provide a more comprehensive understanding of modern authentication mechanisms. ### **Conclusion** The **"Web Application Security Masterclass (With Angular)"** is a valuable course for developers looking to deepen their knowledge of web application security. Despite some drawbacks related to outdated content and repository management, the course's strengths in teaching clarity and practical application make it a worthwhile learning experience. By updating the content and addressing the repository issues, this course could provide an even more enriching educational journey for developers at all levels. --- This review synthesizes the feedback from various learners who have completed the course, highlighting the strengths and areas of improvement to guide potential students in making informed decisions about their learning path.

Charts

Price

Angular Security Masterclass (with FREE E-Book) - Price chart

Rating

Angular Security Masterclass (with FREE E-Book) - Ratings chart

Enrollment distribution

Angular Security Masterclass (with FREE E-Book) - Distribution chart

Related Topics

1302770
udemy ID
7/24/2017
course created date
5/8/2019
course indexed date
Bot
course submited by