Téigh ar aghaidh chuig an bpríomhábhar
Leagan: Ar aghaidh

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 agus allow_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

An bhfuil breiseán nua forbartha agat? Cuir anseo é!