akshat122805 / akshatCSA

CSA First Blog
MIT License
0 stars 1 forks source link

POPQUIZ! #11

Open akshat122805 opened 9 months ago

akshat122805 commented 9 months ago

SCORES: PROXY PASS/SERVER NAME: 0.9 JWT: 0.9 SECURITY CONFIG: 0.8 POJO: 0.8

TOTAL SCORE: 3.4/4

QUESTION 1: Reverse Proxy - serverrname and proxy pass Describe server name definition and proxy pass definition PROXYPASS = forward request to backend and reverse file configuration file

image

   The ServerName directive specifies the domain name of the server. It is used to uniquely identify a virtual host when multiple virtual hosts are served from the same server. This is crucial in scenarios where a single server hosts multiple websites.

Usage: In a reverse proxy configuration, the ServerName helps the proxy server determine which incoming requests should be handled by which backend server. For example, if ServerName is set to example.com, the reverse proxy will handle requests for this domain.

The ProxyPass directive is used to forward requests to a specific backend server. It essentially tells the reverse proxy where to send the request after it's received. This is where the "forwarding" part of the reverse proxy comes into play.

Usage: In the configuration file, you specify the path that will trigger the proxy behavior and the URL of the backend server to which the requests should be forwarded. For example, ProxyPass /app http://backendserver.com/app means that any request coming to the reverse proxy with the path /app will be forwarded to http://backendserver.com/app.

Reverse Proxy Configuration File: This file contains all the necessary directives to set up a


QUESTION 2:

SHOW ME A JWT LOGIN PROCESS, SPLIT THE BROWSER SCREEN AND A PAGE THAT REQUIRES ATHENTICATION AND PRODUCES A COOKIE

In a login system, JWT (JSON Web Tokens) are used to securely transmit user information, and cookies are often used to store these tokens on the user's browser. When a user logs in, the server creates a JWT with user details, sends it to the browser, which stores it in a cookie; then, on subsequent requests, the browser sends this cookie back to the server for user authentication.

image


QUESTION 3:

SECURITY CONFIGURATION AND HOW IT WORKS/ACCESS WITHIN SPRINGBOOT

REQUEST MATCHER THAT SHOWS PERMIT AND AUTHETNICATION REQUIRED

image

This Spring Boot security configuration class, annotated with @Configuration, @EnableWebSecurity, and @EnableMethodSecurity(prePostEnabled = true), sets up Spring Security with JWT for authentication. It uses @Autowired to inject dependencies like JwtAuthenticationEntryPoint for handling authentication errors, JwtRequestFilter for intercepting and validating JWTs in requests, and PersonDetailsService for user details. The passwordEncoder() method defines a BCryptPasswordEncoder for secure password encoding.


QUESTION 4:

TO EXPLAIN A POJO AND CHANGES TO A POJO, SHOW A POJO IN A VSCODE EDITOR, HIGHLIGHT SOMETHING YOU CHANGED. SHOW POJO RESULT VIA DATA IN POSTMAN

image

ADDED AGE!

image

POJO: Plain Old Java Object It is a Java class that adheres to a set of standards to keep a simplistic structure. It does not extend or implement specialized classes or interfaces, which makes it a plain Java object. Private fields: These are variables that cannot be accessed from outside the class. Public no-argument constructor: This is a constructor which does not take any parameters. It is often used to create an instance of the class with default values. Getter and setter methods: Getter methods allow external classes to retrieve the values of private fields. Setter methods allow external classes to modify those values. Changes to a POJO: Adding, modifying, or removing fields, as well as updating methods to reflect the new structure or behavior. It's important to ensure that the changes are backward-compatible if the POJO is used in a serialized or persisted form.

In this updated version of the User class, the age field is now a part of the POJO, allowing me to store and retrieve a user's age along with their id, name, and email. This change demonstrates a typical way to extend the functionality of a POJO in Java.

QUESTION 5: Describe the DOCKER UPDATE PROCESS, SHOW THE SEQUENCE OF COMMANDS REQUIRED TO DO AN APPLICATION UPDATE:

Docker allows for deployment automation inside of portable containers. Process for update docker application: Pull the latest version of the docker image Stop any running containers of the old docker image: docker-compose down Remove any old, outdated containers Run the new container: docker-compose up -d –build