# Go error management

Published articles for Go error management.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Ep. 10: Building Secure Go Systems: Key Management, Middleware, and Error Handling

DevFeed: [Ep. 10: Building Secure Go Systems: Key Management, Middleware, and Error Handling](<https://devfeed.tech/articles/ep-10-building-secure-go-systems-key-management-middleware-and-error-handling-22247.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/07/building-secure-go-systems-key-management-middleware-and-error-handling-ep-10.html>)

Published: 2024-07-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Access Control](<https://devfeed.tech/topics/access-control.md>), [Security](<https://devfeed.tech/topics/security.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [access-control](<https://devfeed.tech/tags/access-control.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authentication-in-go](<https://devfeed.tech/tags/authentication-in-go.md>), [authentication-middleware-go](<https://devfeed.tech/tags/authentication-middleware-go.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [authorization-in-go](<https://devfeed.tech/tags/authorization-in-go.md>), [authorization-middleware-go](<https://devfeed.tech/tags/authorization-middleware-go.md>), [best-practices-for-go-security](<https://devfeed.tech/tags/best-practices-for-go-security.md>), [building-secure-go-systems](<https://devfeed.tech/tags/building-secure-go-systems.md>), [centralized-error-handling-go](<https://devfeed.tech/tags/centralized-error-handling-go.md>), [context](<https://devfeed.tech/tags/context.md>), [context-management-go](<https://devfeed.tech/tags/context-management-go.md>), [cryptographic](<https://devfeed.tech/tags/cryptographic.md>), [cryptographic-keys-go](<https://devfeed.tech/tags/cryptographic-keys-go.md>), [docker-deployment-go-security](<https://devfeed.tech/tags/docker-deployment-go-security.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [go](<https://devfeed.tech/tags/go.md>), [go-application-security](<https://devfeed.tech/tags/go-application-security.md>), [go-authentication-and-authorization](<https://devfeed.tech/tags/go-authentication-and-authorization.md>), [go-authentication-strategies](<https://devfeed.tech/tags/go-authentication-strategies.md>), [go-authorization-strategies](<https://devfeed.tech/tags/go-authorization-strategies.md>), [go-error-handling-best-practices](<https://devfeed.tech/tags/go-error-handling-best-practices.md>), [go-error-management](<https://devfeed.tech/tags/go-error-management.md>), [go-key-management](<https://devfeed.tech/tags/go-key-management.md>), [go-middleware-functions](<https://devfeed.tech/tags/go-middleware-functions.md>), [go-request-handling-pipeline](<https://devfeed.tech/tags/go-request-handling-pipeline.md>), [go-software-security](<https://devfeed.tech/tags/go-software-security.md>), [go-token-handling](<https://devfeed.tech/tags/go-token-handling.md>), [keystore-integration-go](<https://devfeed.tech/tags/keystore-integration-go.md>), [managing-cryptographic-keys-in-go](<https://devfeed.tech/tags/managing-cryptographic-keys-in-go.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [middleware-in-go-applications](<https://devfeed.tech/tags/middleware-in-go-applications.md>), [role-based-access-control-go](<https://devfeed.tech/tags/role-based-access-control-go.md>), [secure-go-applications](<https://devfeed.tech/tags/secure-go-applications.md>), [secure-go-deployment](<https://devfeed.tech/tags/secure-go-deployment.md>), [secure-go-systems](<https://devfeed.tech/tags/secure-go-systems.md>), [token-parsing-go](<https://devfeed.tech/tags/token-parsing-go.md>), [user-id-extraction-go](<https://devfeed.tech/tags/user-id-extraction-go.md>)

### AI overview

Episode 10 of a Go software design series explains how to build secure systems by managing cryptographic keys with a KeyStore, adding authentication and authorization middleware, enforcing role-based access control, and centralizing error handling and request context management.

### Source excerpt

Introduction: Welcome to Episode 10 of our Ultimate Software Design series! In this episode, Bill dives into the integration of authentication and authorization mechanisms within Go packages, providing developers with essential strategies for securing and maintaining their software systems. Learn to configure and manage cryptographic keys using a KeyStore and integrate it into your Go applications. Discover how to create middleware functions for token parsing, user ID extraction, and role-based access control.

## Ep. 9: Go Package Design: Authorization and API Structures

DevFeed: [Ep. 9: Go Package Design: Authorization and API Structures](<https://devfeed.tech/articles/ep-9-go-package-design-authorization-and-api-structures-22251.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/07/go-package-design-authorization-and-api-structures-ep-9.html>)

Published: 2024-07-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [rego](<https://devfeed.tech/topics/rego.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [access-control](<https://devfeed.tech/tags/access-control.md>), [api-structures-in-go](<https://devfeed.tech/tags/api-structures-in-go.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [clean-code-go](<https://devfeed.tech/tags/clean-code-go.md>), [context-in-go-middleware](<https://devfeed.tech/tags/context-in-go-middleware.md>), [efficient-go-code](<https://devfeed.tech/tags/efficient-go-code.md>), [error-handling-patterns-go](<https://devfeed.tech/tags/error-handling-patterns-go.md>), [exported-and-unexported-apis-go](<https://devfeed.tech/tags/exported-and-unexported-apis-go.md>), [go](<https://devfeed.tech/tags/go.md>), [go-api-best-practices](<https://devfeed.tech/tags/go-api-best-practices.md>), [go-api-readability](<https://devfeed.tech/tags/go-api-readability.md>), [go-authorization](<https://devfeed.tech/tags/go-authorization.md>), [go-authorization-logic](<https://devfeed.tech/tags/go-authorization-logic.md>), [go-development-practices](<https://devfeed.tech/tags/go-development-practices.md>), [go-error-management](<https://devfeed.tech/tags/go-error-management.md>), [go-middleware-handlers](<https://devfeed.tech/tags/go-middleware-handlers.md>), [go-package-design](<https://devfeed.tech/tags/go-package-design.md>), [go-package-organization](<https://devfeed.tech/tags/go-package-organization.md>), [go-package-tutorials](<https://devfeed.tech/tags/go-package-tutorials.md>), [go-software-architecture](<https://devfeed.tech/tags/go-software-architecture.md>), [go-software-tips](<https://devfeed.tech/tags/go-software-tips.md>), [intuitive-go-codebase](<https://devfeed.tech/tags/intuitive-go-codebase.md>), [maintainable-go-code](<https://devfeed.tech/tags/maintainable-go-code.md>), [rego](<https://devfeed.tech/tags/rego.md>), [rego-scripts-for-go](<https://devfeed.tech/tags/rego-scripts-for-go.md>), [role-based-authorization-in-go](<https://devfeed.tech/tags/role-based-authorization-in-go.md>), [scalable-go-software-design](<https://devfeed.tech/tags/scalable-go-software-design.md>), [secure-access-control-go](<https://devfeed.tech/tags/secure-access-control-go.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [user-claims-context-go](<https://devfeed.tech/tags/user-claims-context-go.md>)

### AI overview

This episode explains how to design Go packages that support role-based authorization with Rego, clearly separate exported and unexported APIs, manage errors consistently, and pass information through context between middleware and handlers.

### Source excerpt

Introduction: Welcome to Episode 9 of our Ultimate Software Design series! In this episode, Bill delves into the intricacies of implementing robust authorization and API structure within Go packages, offering invaluable insights for developers aiming to build scalable and maintainable software systems. Implement role-based authorization logic for secure and precise access control using Rego scripts. Learn best practices for structuring exported and unexported APIs to maintain a clean, intuitive, and maintainable codebase.