Skip to content
/ iam Public

IAM - Identity and access management system, cloud native friendly, multiple authentication methods

Notifications You must be signed in to change notification settings

coding-hui/iam

Repository files navigation

Language : us | 🇨🇳

WeCoding IAM

IAM = Identity and Access Management

An identity and access management system developed in Go, used for authorizing resource access.

✨ Features

  • RBAC access control model based on Casbin, providing fine-grained permission control down to buttons.

  • Multiple authentication methods: JWT, Basic, SecretKey.

  • Built on the GIN WEB API framework, providing rich middleware support (user authentication, CORS, access logs, trace ID, etc.).

  • Follows RESTful API design specifications.

  • Supports Swagger documentation (based on swaggo).

  • Database storage based on GORM, extensible to multiple types of databases.

  • Supports dynamically loading multiple configuration files.

  • Multi-command mode, providing the iamctl command-line tool.

  • TODO: Support for multi-tenancy.

  • TODO: Unit tests.

🎁 Built-in

  • User Management: Users are system operators, this function mainly completes system user configuration.

  • Organization Management: Configures system organization (company, department, group).

  • Resource Management: Resources are identifiers of specific resources in the business system, which can be an entity, such as a user, or a menu, button, API.

  • Permission Policy: Permission policies combine multiple resources, operations, and authorization effects to provide flexible access permission management and control functions for applications.

  • Role Management: A role is a collection of permission resources, which can authorize certain resources and operation permissions to the role. When a role is granted to a user, the user will inherit all permissions of this role.

📦 Local Development

Environment Requirements

  • go 1.19
  • node v16.19.1
  • pnpm 8.5.1

Development Directory Creation

mkdir wecoding
cd wecoding

Get Code

# Get backend code
git clone https://github.com/coding-hui/iam.git

# Get frontend code
git clone https://github.com/coding-hui/iam-frontend.git

Start Instructions

Server Start

# Enter iam backend project
cd ./iam

# Build
make build

# Modify configuration
# File path iam/configs/iam-apiserver.yaml
vi ./configs/iam-apiserver.yaml

# Start service
# macOS or linux
go run ./cmd/iam-apiserver/main.go -c configs/iam-apiserver.yaml

# windows
go run .\cmd\iam-apiserver\main.go -c configs\iam-apiserver.yaml

The built binary file is saved in the _output/platforms/linux/amd64/ directory.

Console UI Start

# Install dependencies
cd iam-frontend

npm install -g pnpm

pnpm install

pnpm start

Visit: http://localhost:8000 ADMIN/WECODING

User Guide

IAM Documentation

Contributing

We welcome contributions: