Breiseán Fíordheimhnithe
Cad is breiseán fíordheimhnithe ann?
Is breiseán sórtála é a ligeann do dhaoine a fhaigheann rochtain nó a fhoilsíonn ar phacáiste ar leith a láimhseáil. De réir réamhshocraithe tá an htpasswd
ionsuite, ach is féidir a chur in ionad go héasca ag do chuid féin.
Ag tosú
Sainmhínítear na forlíontáin fíordheimhnithe sa rannán auth:
, mar seo a leanas:
auth:
htpasswd:
file: ./htpasswd
is féidir go leor breiseán a shlabhra freisin:
auth:
htpasswd:
file: ./htpasswd
anotherAuth:
foo: bar
bar: foo
lastPlugin:
foo: bar
bar: foo
Má tá ceann de na breiseán sa slabhra in ann an t-iarratas a réiteach, ní thabharfar aird ar na cinn eile.
Conas a oibríonn an breiseán fíordheimhnithe?
Go bunúsach caithfimid réad a thabhairt ar ais le modh amháin darb ainm authenticate
a gheobhaidh 3 argóint (user, password, callback
).
Ar gach iarratas, spreagfar authenticate
agus ba cheart don bhreiseán na dintiúir a thabhairt ar ais, má theipeann ar an authenticate
, rachaidh sé ar ais chuig an ról $anonymous
de réir réamhshocraithe.
API
interface IPluginAuth<T> extends IPlugin<T> {
authenticate(user: string, password: string, cb: AuthCallback): void;
adduser?(user: string, password: string, cb: AuthCallback): void;
changePassword?(user: string, password: string, newPassword: string, cb: AuthCallback): void;
allow_publish?(user: RemoteUser, pkg: AllowAccess & PackageAccess, cb: AuthAccessCallback): void;
allow_access?(user: RemoteUser, pkg: AllowAccess & PackageAccess, cb: AuthAccessCallback): void;
allow_unpublish?(
user: RemoteUser,
pkg: AllowAccess & PackageAccess,
cb: AuthAccessCallback
): void;
apiJWTmiddleware?(helpers: any): Function;
}
Níl ach
aduser
,allow_access
,apiJWTmiddleware
,allow_publish
agusallow_unpublish
roghnach, soláthraíonn verdaccio cúl-tuilleamh sna cásanna sin go léir.
apiJWTmiddleware
method
Ó v4.0.0
Tugadh isteach apiJWTmiddleware
ar PR#1227 chun smacht iomlán a bheith agat ar an láimhseálaí comharthaí, díchumasófar tacaíocht login/adduser
má sháraítear an modh seo. Molaimid gan an modh seo a chur i bhfeidhm ach amháin má tá sé riachtanach. Féach sampla iomlán anseo.
Cad ba cheart dom a thabhairt ar ais i ngach ceann de na modhanna?
Bíonn Verdaccio ag brath ar fheidhmeanna callback
tráth scríofa seo. Ba chóir do gach modh glaoch ar an modh agus cad a thugann tú ar ais tábhachtach, a ligean ar athbhreithniú a dhéanamh ar conas é a dhéanamh.
authentication
glaoch ar ais
Nuair a bheidh an fíordheimhniú curtha i gcrích tá 2 rogha ann chun freagra a thabhairt ar verdaccio
.
Má theipeann ar an bhfíordheimhniú
Murar éirigh leis an údar, cuir false
ar ais mar an dara argóint.
callback(null, false);
Má tá an rath fíordheimhnithe
D’éirigh leis an údar.
Is sraith teaghráin é groups
a bhfuil an t-úsáideoir ina chuid díobh.
callback(null, groups);
Má thugann an fíordheimhniú earráid
Seans go dteipfidh ar an tseirbhís fíordheimhnithe, agus b’fhéidir gur mhaith leat é sin a léiriú i bhfreagra an úsáideora, m. sh.: níl an tseirbhís ar fáil.
import { getInternalError } from '@verdaccio/commons-api';
callback(getInternalError('something bad message), null);
Ní hionann teip ar logáil isteach agus earráid seirbhíse, más mian leat a chur in iúl don úsáideoir go bhfuil na dintiúir mícheart, níl le déanamh ach
false
a sheoladh ar ais in ionad teaghrán grúpaí. Braitheann an t-iompar ort den chuid is mó.
adduser
callback
Má éiríonn le adduser
Má tá an tseirbhís in ann úsáideoir a chruthú, seol ar ais true
mar an dara argóint.
callback(null, true);
Má theipeann ar adduser
Ní mór earráid a thabhairt ar ais ó ghníomh ar bith eile seachas an rath.
import { getConflict } from '@verdaccio/commons-api';
const err = getConflict('maximum amount of users reached');
callback(err);
changePassword
callback
Má éiríonn leis an iarratas
Má tá an tseirbhís in ann úsáideoir a chruthú, seol ar ais true
mar an dara argóint.
const user = serviceUpdatePassword(user, password, newPassword);
callback(null, user);
Má theipeann ar an iarratas
Ní mór earráid a thabhairt ar ais ó ghníomh ar bith eile seachas an rath.
import { getNotFound } from '@verdaccio/commons-api';
const err = getNotFound('user not found');
callback(err);
allow_access
, allow_publish
, or allow_unpublish
callback
Tá sé mar aidhm ag na modhanna seo roinnt gníomhartha a cheadú nó a dhiúltú.
Má éiríonn leis an iarratas
Má tá an tseirbhís in ann úsáideoir a chruthú, cuir true
ar ais mar an dara argóint.
allow_access(user: RemoteUser, pkg: PackageAccess, cb: Callback): void {
const isAllowed: boolean = checkAction(user, pkg);
callback(null, isAllowed)
}
Má theipeann ar an iarratas
Ní mór earráid a thabhairt ar ais ó ghníomh ar bith eile seachas an rath.
import { getNotFound } from '@verdaccio/commons-api';
const err = getForbidden('not allowed to access package');
callback(err);
Gin breiseán fíordheimhnithe
Le haghaidh faisnéis mhionsonraithe seiceáil ár leathanach gineadóra breiseán. Rith an t-ordú yo
i do theirminéal agus lean na céimeanna.
➜ yo verdaccio-plugin
Just found a `.yo-rc.json` in a parent directory.
Setting the project root at: /Users/user/verdaccio_yo_generator
_-----_ ╭──────────────────────────╮
| | │ Welcome to │
|--(o)--| │ generator-verdaccio-plug │
`---------´ │ in plugin generator! │
( _´U`_ ) ╰──────────────────────────╯
/___A___\ /
| ~ |
__'.___.'__
´ ` |° ´ Y `
? What is the name of your plugin? service-name
? Roghnaigh Clóscríobh Teanga
? Cén cineál breiseán is mian leat a chruthú? auth
? Please, describe your plugin awesome auth plugin
? Ainm úsáideora GitHub nó ainm úsáideora na heagraíochta
? Ainm an Údair Juan Picado
? Ríomhphost an Údair jotadeveloper@gmail.com
? Key your keywords (comma to split) verdaccio,plugin,auth,awesome,verdaccio-plugin
create verdaccio-plugin-authservice-name/package.json
create verdaccio-plugin-authservice-name/.gitignore
create verdaccio-plugin-authservice-name/.npmignore
create verdaccio-plugin-authservice-name/jest.config.js
create verdaccio-plugin-authservice-name/.babelrc
create verdaccio-plugin-authservice-name/.travis.yml
create verdaccio-plugin-authservice-name/README.md
create verdaccio-plugin-authservice-name/.eslintrc
create verdaccio-plugin-authservice-name/.eslintignore
create verdaccio-plugin-authservice-name/src/index.ts
create verdaccio-plugin-authservice-name/index.ts
create verdaccio-plugin-authservice-name/tsconfig.json
create verdaccio-plugin-authservice-name/types/index.ts
create verdaccio-plugin-authservice-name/.editorconfig
I'm all done. Suiteáil npm duit chun na spleáchais riachtanacha a shuiteáil. Má theipeann air seo, bain triail as an ordú a rith tú féin.
⸨ ░░░░░░░░░░░░░░░░░⸩ ⠋ Meiteashonraí: léiriú ar an raon pacótaí sill do @babel/plugin-syntax-jsx@^7.4
Tar éis chríochnú na suiteála, rochtain ar do scafall tionscadail.
➜ cd verdaccio-plugin-service-name
➜ cat package.json
{
"name": "verdaccio-plugin-service-name",
"version": "0.0.1",
"description": "awesome auth plugin",
...
Sampla de chur i bhfeidhm iomlán ES5
function Auth(config, stuff) {
var self = Object.create(Auth.prototype);
self._users = {};
// config for this module
self._config = config;
// verdaccio logger
self._logger = stuff.logger;
// pass verdaccio logger to ldapauth
self._config.client_options.log = stuff.logger;
return self;
}
Auth.prototype.authenticate = function (user, password, callback) {
var LdapClient = new LdapAuth(self._config.client_options);
....
LdapClient.authenticate(user, password, function (err, ldapUser) {
...
var groups;
...
callback(null, groups);
});
};
module.exports = Auth;
Agus beidh cuma ar an gcumraíocht:
auth:
htpasswd:
file: ./htpasswd
Cá bhfuil htpasswd
iarmhír ainm an bhreiseáin. m. sh.: verdaccio-htpasswd
agus bheadh an chuid eile den chorp mar pharaimí cumraíochta an bhreiseáin.
Liostaigh Forlíontáin Fíordheimhnithe Pobail
- verdaccio-bitbucket: Breiseán fíordheimhnithe Bitbucket le haghaidh verdaccio.
- verdaccio-bitbucket-server: Breiseán fíordheimhnithe Freastalaí Bitbucket le haghaidh verdaccio.
- verdaccio-ldap: Breiseán údaraithe LDAP le haghaidh verdaccio.
- verdaccio-active-directory: Breiseán fíordheimhnithe an Eolaire Gníomhach le haghaidh verdaccio
- verdaccio-gitlab: úsáid GitLab Personal Access Token chun fíordheimhniú a dhéanamh
- verdaccio-gitlab-ci: Cumasaigh GitLab CI fíordheimhniú i gcoinne verdaccio.
- verdaccio-htpasswd: Údar bunaithe ar bhreiseán comhaid htpasswd (ionsuite) le haghaidh verdaccio
- verdaccio-github-oauth: Breiseán fíordheimhnithe Github oauth le haghaidh verdaccio.
- verdaccio-github-oauth-ui: Breiseán GitHub OAuth don chnaipe logáil isteach verdaccio.
- verdaccio-groupnames: Breiseán chun cumainn ghrúpa dhinimiciúla a láimhseáil ag úsáid
$group
chomhréir. Is fearr a oibríonn leis an mbreiseán ldap. - verdaccio-sqlite: Breiseán Fíordheimhnithe SQLite le haghaidh Verdaccio
- verdaccio-okta-auth Verdaccio Okta Údar
- verdaccio-azure-ad-login Lig do d'úsáideoirí fíordheimhniú isteach i Verdaccio trí Azure AD OAuth 2.0 API
- verdaccio-auth-gitlab Breiseán fíordheimhnithe Verdaccio le comharthaí rochtana pearsanta gitlab.
An bhfuil breiseán nua forbartha agat? Cuir anseo é!