56,966 blogs · [ { "id": "01a0d903-a135-70df-a262-a06c68e96e4d", "title": "Guest Lecture at HTW Berlin: AppSec in the Age of Agentic Engineering", "url": "https://www.janbrennenstuhl.eu/new-appsec-operating-model/", "published_at": "2026-07-03T00:00:00+00:00" }, { "id": "01a0878a-dd69-7278-9229-5652b865a05a", "title": "Shift Down: Why Agentic Engineering Demands Platform-Level Security", "url": "https://www.janbrennenstuhl.eu/shift-down-appsec/", "published_at": "2026-06-14T00:00:00+00:00" }, { "id": "01a0878a-dd69-7278-9229-5652b88ed241", "title": "Dependency Updates: latest Is Not a Security Strategy", "url": "https://www.janbrennenstuhl.eu/automatic-dependency-updates/", "published_at": "2026-05-15T00:00:00+00:00" }, { "id": "01a0878a-dd69-7278-9229-5652b9821c47", "title": "AppSec in the Age of Agentic Engineering", "url": "https://www.janbrennenstuhl.eu/appsec-agentic-engineering/", "published_at": "2026-05-14T00:00:00+00:00" }, { "id": "01a0878a-dd69-7278-9229-5652b9d27ee6", "title": "Goodbye Big Tech: My European JAMstack Migration", "url": "https://www.janbrennenstuhl.eu/european-jamstack-migration/", "published_at": "2025-07-06T00:00:00+00:00" }, { "id": "01a0878a-dd69-7278-9229-5652ba6a0747", "title": "Bunny Shield Review: 3 Things Need Improvement", "url": "https://www.janbrennenstuhl.eu/bunny-shield-review/", "published_at": "2025-06-07T00:00:00+00:00" }, { "id": "01a0878a-dd69-7278-9229-5652bb0d4da1", "title": "Bunny CDN: How to redirect Root Domain to Subdomain", "url": "https://www.janbrennenstuhl.eu/bunny-cdn-domain-redirect/", "published_at": "2025-04-22T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56beef782b", "title": "What is JWA? A Deep Dive into JSON Web Algorithms", "url": "https://www.janbrennenstuhl.eu/jwa-json-web-algorithms/", "published_at": "2023-06-08T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56bf1a01fa", "title": "Mastering JWKS: JSON Web Key Sets Explained", "url": "https://www.janbrennenstuhl.eu/jwks-json-web-key-set/", "published_at": "2023-06-02T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56bfb9a1a9", "title": "JSON Web Encryption: Exploring JWE Token", "url": "https://www.janbrennenstuhl.eu/jwe-token-json-web-encryption/", "published_at": "2023-05-29T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c09722e8", "title": "JWT vs OAuth 2.0: Understanding the Key Differences", "url": "https://www.janbrennenstuhl.eu/jwt-vs-oauth/", "published_at": "2023-05-24T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c1865e8a", "title": "What is Whaling Cyber Awareness? Prevention Tips & Training", "url": "https://www.janbrennenstuhl.eu/what-is-whaling-cyber-awareness/", "published_at": "2023-05-23T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c19e0714", "title": "Whaling Phishing: Definition and Prevention Strategies", "url": "https://www.janbrennenstuhl.eu/whaling-phishing-definition/", "published_at": "2023-05-18T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c290389d", "title": "Step-Up Authentication: Elevating Security with OpenID Connect (OIDC)", "url": "https://www.janbrennenstuhl.eu/step-up-authentication/", "published_at": "2023-05-14T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c2d724c3", "title": "Password Attack Guide: What is Password Spraying?", "url": "https://www.janbrennenstuhl.eu/password-spraying/", "published_at": "2023-05-11T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c3a89a58", "title": "Passwordless: Critical Notes on FIDO2 Passkeys", "url": "https://www.janbrennenstuhl.eu/fido-passkeys/", "published_at": "2023-05-08T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c4139f0a", "title": "Passwordless Authentication: Future of Cybersecurity", "url": "https://www.janbrennenstuhl.eu/passkeys-passwordless-authentication/", "published_at": "2023-05-07T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c4b79a4f", "title": "Long Password Support for Safer Login Systems", "url": "https://www.janbrennenstuhl.eu/long-password-login-system/", "published_at": "2023-05-06T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c4d83e1a", "title": "Max Password Length: A Secure Password Guide", "url": "https://www.janbrennenstuhl.eu/max-password-length-recommendation/", "published_at": "2023-05-04T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c59a34c5", "title": "Honeytoken: Authentication Attack Breach Detection", "url": "https://www.janbrennenstuhl.eu/honeytoken-accounts-credential-breach/", "published_at": "2023-04-29T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c60a977b", "title": "How to Design a Strong & Usable Password Policy", "url": "https://www.janbrennenstuhl.eu/password-strength-policy-guide/", "published_at": "2023-04-26T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c69c63f1", "title": "How to: Password-Manager Friendly Login Forms", "url": "https://www.janbrennenstuhl.eu/password-security-manager-friendly/", "published_at": "2023-04-23T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c74a86e0", "title": "Learning AssertJ: Null ain't Blank", "url": "https://www.janbrennenstuhl.eu/assertj-null-not-blank/", "published_at": "2017-09-05T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c7b2cd51", "title": "The Purpose of JWT: Stateless Authentication", "url": "https://www.janbrennenstuhl.eu/purpose-jwt-stateless-authentication/", "published_at": "2017-04-28T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c7c570ab", "title": "On Making Spring Security OAuth RFC-compliant", "url": "https://www.janbrennenstuhl.eu/spring-security-oauth-rfc/", "published_at": "2017-02-01T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c869de3b", "title": "Weak Crypto, Github SAML Attack & Twitter Security UX", "url": "https://www.janbrennenstuhl.eu/weak-google-crypto-github-saml/", "published_at": "2017-01-15T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c94d1740", "title": "Single-Use JWT: Unlocking the Power of Stateless One Time Token", "url": "https://www.janbrennenstuhl.eu/howto-single-use-jwt/", "published_at": "2016-12-30T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56c96137ed", "title": "AWS DynamoDB: Backup & Recovery Strategy", "url": "https://www.janbrennenstuhl.eu/aws-dynamodb-backup-recovery/", "published_at": "2016-01-18T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56ca2157b9", "title": "Abusing JSON: Why AWS CloudFormation sucks?!", "url": "https://www.janbrennenstuhl.eu/why-aws-cloudformation-sucks/", "published_at": "2015-05-21T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56cae28dca", "title": "Evolution of a Microservice: A Git History Visualisation", "url": "https://www.janbrennenstuhl.eu/microservice-evolution/", "published_at": "2015-05-21T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56cbb48956", "title": "Python Docopt: Convert Tuple List to Dictionary", "url": "https://www.janbrennenstuhl.eu/howto-convert-tuplelist-dictionary/", "published_at": "2015-04-28T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56cbef2853", "title": "How to Migrate SVN to GIT with History?", "url": "https://www.janbrennenstuhl.eu/howto-convert-svn-git/", "published_at": "2015-04-15T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56ccedbfb1", "title": "How to Check Github Licenses", "url": "https://www.janbrennenstuhl.eu/github-license-checker/", "published_at": "2015-03-25T00:00:00+00:00" }, { "id": "01a0878a-dd6a-730c-9786-2f56cd9a99a9", "title": "AWS Monocyte: Let's Build a Cloud Immune System", "url": "https://www.janbrennenstuhl.eu/aws-cloud-immune-system/", "published_at": "2015-03-18T00:00:00+00:00" } ] posts Claim your blog
Back to janbrennenstuhl.eu
Blog · corpus.blog/blogs/janbrennenstuhl.eu/posts

janbrennenstuhl.eu

janbrennenstuhl.eu

2026

2025

2023

2017

2016

2015